Clase 7: Tácticas de disponibilidad y eficiencia

Anuncio
Ingeniería de Software II
Primer Cuatrimestre de 2009
Concerns y Tácticas de Dependability
Buenos Aires, 16 de Abril de 2009
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2008
2009
Conceptos Generales
DEPENDABILITY
2
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Dependability
―Dependability‖ es la propiedad del sistema de software
que indica el nivel justificable de confianza que puede ser
delegada sobre los servicios que éste entrega
Pueder ser caracterizado a través de los siguientes atributos:
 Disponibilidad (availability) — prontitud para el uso
 Confiabilidad (reliability) — continuidad de servicio en el tiempo
 Safety — no ocurrencia de consecuencias catastróficas para el entorno
 Confidencialidad (confidentiality) — no apertura de información no autorizada
 Integridad (integrity) — no ocurrencia de alteraciones de información no
deseables
 Mantenibilidad (maintainability ) — aptitud para sobrellevar reparaciones
correctivas y evolutivas
Notar que los últimos tres ítems corresponden a seguridad y modificabilidad
December 1995; Mario Barbacci Mark H. Klein Thomas A. Longstaff Charles B. Weinstock; Technical Report CMU/SEI-95-TR-021 ESC-TR-95-021, Quality Attributes
3
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Disponibilidad
 Disponibilidad: La habilidad del sistema de estar completa o
parcialmente operacional cuando se lo requiera.
 Disponibilidad = (Periodo de tiempo – tiempo no operativo ) /
Periodo de Tiempo
La disponibilidad se suele medir en cantidad de ―nueves‖, siendo el
período base de un año. Se usa para especificar SLA de proveedores
sobre los cuales delego parte de mi operación.
Por ejemplo un proveedor de enlace punto a punto nos puede decir que
su ―SLA es de 99,99%‖
¿ Esto es mucho o es poco ?
Veamos la siguiente tabla
4
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Ejemplo de Disponibilidad
SLA Disponibilidad
5
7x24
8760 horas al año
7x8
2920 horas al año
90%
876 horas (36,5 días)
292 horas (12,16 días)
95%
438 horas (18,25 días)
146 horas (6,07 días)
99%
87,6 horas (3,65 días)
29,2 horas (1,21 días)
99,9%
8,76 horas
2,92 horas
99,99%
52,56 minutos
17,47 minutos
99,999%
5,256 minutos
1,747 minutos
99,9999%
31,536 segundos
10,483 segundos
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Confiabilidad
Confiabilidad: Es la habilidad del sistema para continuar operando
a lo largo del tiempo.
En muchos sistemas esto podría no ser un concern, lo cual no tiene
necesariamente relación con que no se requiera disponibilidad.
Ejemplo: Un sistema de control de aterrizaje tiene un requerimiento
alto de disponibilidad, éste debe estar disponible cuando se lo
requiera, sin embargo no tiene grandes requerimientos de
confiabilidad puesto que no debe estar operativo por un tiempo
excesivo de uso.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Disponibilidad y Confiabilidad
MTTR
Falla
MTTF
Reparación
Falla
MTBF
MTBF
7
Confiabilidad = MTTF
Disponibilidad = MTTF / (MTTF+MTTR)
7
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Mantenibilidad
Mantenibilidad: La habilidad del sistema de
aptitud para sobrellevar reparaciones correctivas
y evolutivas.
¿Por que lo deberíamos considerar aquí?
8

Aunque es un concern más cercano a
Modificabilidad, podríamos no referirnos solo a
piezas de software.

MTTR tiene dependencias sobre esta propiedad
incluso cuando nos refiramos a mantenibilidad de
software y no del sistema en general.

La dependencia en el MTTR hace que nuevos
stakeholders ahora entren en juego con ese
concern en mente al hablar de modificabilidad.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Failures (fallas)
Un sistema falla cuando su comportamiento difiere del
intencionado.

9
Notar que la defición de ―falla‖ está basada en cuanto a
la intención y no con respecto a la especificación. Si la
intención con respecto al comportamiento del sistema
difiere de la especificación del comportamiento, entonces
tenemos una falta (defecto) en la especificación.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Failures Classes
Domain

Value: valor incorrecto computado

Time: servicio entregado fuera de tiempo
 Halting
 No
-> fail-stop
entrega mas output -> fail-silent
Consecuences

Rango desde benignas hasta catastróficas
Perception
10

Concistent: todos los usuarios tienen la misma
percepción de la falla

Inconsistent: algunos usuarios tienen percepciones
diferentes de la falla (BIZANTINE FAILURE)
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Errors
Un error es un estado del sistema que es
probable nos lleve a un estado de falla (failure).
Sin importar si nos lleva o no a ese estado,
tenemos tres factores:
1.
La redundancia del sistema (por diseño o
inherente a éste)
2.
La actividad del sistema (el error podría
erradicarse antes que cause daño)
3.
La consideración del usuario con respecto a cual
sería un comportamiento aceptable.
Por ejemplo en transmisión de datos existe el concepto
de ―acceptable error rate‖
11
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Faults
Una falta (fault) es la adjudicación o causa
hipotética de un error.
12
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Pathology
Fault -> Error -> Failure
Faults que no se han manifestado en errores se
conocen como dormant failures, en caso contrario
se conoce como active failure.
Un error puede estar latent o detected.
Los errores normalmente se propagan creando otros
errores.
Faults activas no pueden ser observadas solo los
errores pueden serlo.
Un failure se produce cuando un error afecta un
servicio que está siendo entregado al usuario.
Un failure en un elemento de runtime puede o no
afectar el sistema.
13
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Requerimientos para Dependability
RELEVAMIENTO DE CONCERNS
14
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Concerns
Clases de servicios (QoS)
Tiempo fuera planeado
Tiempo de Recuperación
Tasa de fallas
Recuperación de desastres.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Class of Service
Consideremos un sistema de cajeros automáticos. Los cajeros se comunican en tiempo
real con una computadora central que mantiene la información de las cuentas.
Full Service implica que los usuarios pueden consultas saldos e ingresar transacciones
soportadas.
No Service significa que no se pueden realizar consultas ni transacciones.
Ocasionalmente las comunicaciones entre los cajeros y la computadora central fallan, la
computadora central debe ser apagada por cuestiones de mantenimiento, o el servicio
puede verse disminuido en su tiempo de respuesta en situaciones de gran carga de
trabajo.
En casos podríamos aún disponer de parte de los servicios gracias al soporte de
computación local en los cajeros:
Restringir los usuarios a consulta de saldo solamente.
Restringir las transacciones por debajo de determinado límite.
Requerir mayor tiempo para realizar las transacciones.
Restringir a los usuarios solo a efectuar depositos.
La disponibilidad no es un problema binario.
Asociamos grupos de funciones a niveles de
servicio. Esto nos define las clases de servicio.
Debemos identificar el correcto balance entre costo
y nivel de disponibilidad requeridos.
Software Systems Architecture: Foundations; Rick Rozansky, Eoin Woods
16
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Downtime
Planeado

Tareas de mantenimiento requieren remover de servicio
el sistema de manera parcial o total.

Es posible estimar el tiempo que demoran estas tareas.
No Planeado

Ocurre debido a fallas no previstas.

Es posible identificar posibles puntos de falla y trabajar
sobre ellos.
Time to repair (MTTR)

17
La falla es la mitad del problema. Requerimos conocer
para cada posible punto de falla el tiempo que demora
poner el sistema disponible nuevamente.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Resumen: Identificar necesidad real
Capturar requerimientos de disponibilidad

Identificar los tipos de servicio

Identificar los niveles de servicio
Construir un schedule de operación

Operación Normal Requerida

No disponibilidad permitida
Estimar la Disponibilidad de la Plataforma
Estimar la Disponibilidad Funcional
18

Operación regular

Actividades de mantenimiento (backups), analizar
posibilidades de concurrencia.

Proceso batch requeridos
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
ARQUITECTURA Y DEPENDABILITY
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
19
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Components & Dependability
Relación entre dependability de los componentes
y de los sistemas
20

Usando (Undependable Components) podemos
construir (Dependable Systems)

Usando (Dependable Component) podríamos
incurrir en construir (Undependable System)
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Components & Dependability
Controlar cuidadosamente inter-dependencias
externas del componente

Los cambios de comportamiento de un componente
en particular, incluyendo anomalías, debería tener
mínimo impacto en el comportamiento del sistema
en general.
 Restringir
todas las dependencias inter-componente a
ser explicitas a través de sus interfaces públicas.
 Minimizar
o completamente eliminar efectos
colaterales en las operaciones que realizan los
componentes.
21
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Components & Dependability
Proveer capacidades de reflection a los componentes

En caso que un componente reduzca o interrumpa su
servicio, debe ser posible monitorear su estado interno
de modo de comprender la salud del mismo.
Proveer mecanismos de manejo de excepciones

Si un componente falla, el resto del sistema debe poder
responder ajustándose a esa falla. Para que esto suceda
es necesario que el componente que falla exponga la
información necesaria al resto del sistema.

Los mecanismos de manejo de excepciones forman parte
de la interfaz publica del componente.
Especificar invariantes de estado de los componentes

22
Acotar los cambios internos permitidos al estado de los
componentes permite identificar situaciones
excepcionales.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Connectors & Dependability
Emplear conectores que explícitamente controlen
inter-dependencias entre componentes
23

Dependencias no intencionadas a los largo del
sistema dañará la disponibilidad del sistema.
Debemos usar conectores de primera clase que
restrinjan las interacciones y dependencias.

Si es necesario podemos aislar completamente los
componentes.

Algunos conectores ampliamente usados como por
ejemplo shared-memory y procedure-call brindan
excesiva libertad sobre lo que puede el
desarrollador hacer en cuanto a incrementar las
dependencias entre los componentes
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Connector & Dependability
Proveer garantías de interacción explícitas.

En algunos escenarios es imperativo que un
componente reciba la informacion enviada, incluso
multiples veces si es necesario. En otros casos
debemos garantizar que los mensajes sean
transmitidos una sola vez y que hacer si nunca son
enviados
Imaginemos un sistema de control de vuelo que recibe cambio de
posición de flaps múltiples instancias que correspondían al mismo
mensaje.
24
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Ejemplo Client-Server
CLIENT = (call->wait->continue->CLIENT).
SERVER = (request->service->reply->SERVER).
||CLIENT_SERVER = (CLIENT || SERVER)
/{call/request, reply/wait}.
25
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Software Connector & Dependability
Utilizar conectores avanzados para soportar
disponibilidad
26

Instanciar replicas de componentes que están
fallando.

Reemplazar en ejecucion componentes caídos.

Soportar multiples versiones de la misma
funcionalidad.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Configuración de Arquitectura & Dependability
Evitar SPOF (Single Point of Failure)
27

Analizar interdependencias entre elementos
(componentes y conectores).

Evitar que la caída o falla de uno de los elementos
comprometa todo el sistema.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Configuración de Arquitectura & Dependability
Proveer backups para funcionalidad y datos
críticos.

Respaldar infraestructura y configuración, además
de datos.
Proveer mecanismos de helth-monitoring no
intrusivos.

Algunas fallas no son obvias hasta que han
generado daños. Es posible tener tratamiento
preventivo.

Identificar eventos que debemos monitorear y que
son indicadores de anomalías.
Muchos sistemas de storage y memoria utilizan un proceso de lectura posterior a
la escritura para verificar que el sistema funciona correctamente. En caso de
diferencia, repiten el proceso sobre otro espacio físico del dispositivo (memoria o
disco) hasta tener éxito. El hecho de falla parcial de este tipo disminuye el nivel
de servicio del dispositivo e inicia el proceso de remoción y reemplazo.
28
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Configuración de Arquitectura & Dependability
Soportar adaptación dinámica

Permiten la adición, remoción, reemplazo y
reconexión de componentes y conectores.

Sistemas descentralizados soportan el
descubrimiento de servicios que es útil para
facilitar la reconfiguración.
 Notar
que la disponibilidad del sistema se encuentra
reducida durante y luego de una reconfiguración.
29
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
TÁCTICAS PARA DEPENDABILITY
30
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fallas
Todo sistema de hardware o software tiene fallas.
Se dice que un sistema es tolerante a fallas si
puede seguir operando en presencia de fallas.
SPOF (Single Point of Failure): Punto de falla que
hace que todo el sistema deje de funcionar.
Uno de los puntos a lograr es que no tenga SPOF.
31
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Tipos de falla que debemos identificar
Tipo de Falla
Descripción
Crash failure
El sistema funciona perfectamente hasta que ocurre un error
inesperado. (Kernel panic, pantalla azul, etc)
Omission failure
Receive or Send
El sistema falla recibiendo requerimientos, enviando o recibiendo
mensajes.
Timing failure
El sistema responde fuera de los tiempos esperados
Response failure
Value failure
State transition failure
Respuesta del sistema incorrecta o se desvía del flujo de control
correcto.
Arbitrary failure
El servicio produce una salida incorrecta que no puede ser
detectada
32
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Tactics
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault detection
Ping/Echo

Uno de los componentes emite un ping y espera recibir
un echo de respuesta dentro de un tiempo determinado
 Se

34
puede usar

Cuando mas de un componente es responsable de llevar
adelante una tarea.

Cuando un componente cliente quiere asegurar que el
componente server y el conector están operativos. En este
caso el timeframe usado sirve para verificar condiciones de
performance además de disponibilidad.
Detectores de Falla de tipo "Ping/echo" pueden ser
organizados en jerarquías donde el nivel mas bajo
verifica al proceso con quien comparte el procesador, y
los niveles mas altos verifica al nivel anterior. Esto
reduce el ancho de banda requerido contra un fautl
detector remoto que verifique todos los procesos.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault detection
Heartbeat (dead man timer)

Un componente emite una señar de heartbeat
periódicamente y otro componente escucha dicha
señal (listener).
 La
falla sobre el componente monitoreado se asume
cuando el listener deja de percibir dicha señal.

El heartbeat tambien puede acarrear datos.
 Por
ejemplo un cajero automático podría
periodicamente enviar el log de la ultima transaccion
al server.
35
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Ping/Echo y Heartbeat
Heatbeat
Monitor
Component
Monitor
Ping/Echo
Ping/Echo
Component
Monitor
Ping/Echo
Thread A
Echo/Ping
Thread B
Shared Memory and Processor
36
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault detection
Exceptions

La semántica de ciertas fallas tiene mayor complejidad
que la simple ausencia de interacción.

Un método para reconocer la fallas es detectar por
comportamiento la violación de un contrato (situación
excepcional).

Esto dispara un proceso que se ejecuta en el mismo
procesador que donde se ha originado la falla.
Resumen de Fault Detection
38

El ping/echo y heartbeat operan sobre diferentes
procesos mientras que las excepciones lo hacen sobre el
mismo.

El exception handler normalmente efectúa
transformaciones semánticas a efectos de permitir el
proceso continúe.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Recovery - Estructura
Fault recovery

Recovery / Preparation / Repair
 Active
redundancy
 Passive
redundancy
 Spare
 Voting

Recovery reintroduction
 Shadow
 Synch
 Rollback
39
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Recovery - Redundancy
Se puede evitar los SPOF con redundancia y esta se puede
clasificar en:
Redundancia de Información: Se agrega información
redundante en una transmisión o en un
almacenamiento.
Redundancia de Tiempo: Se realiza un acción y luego
si es necesario se vuelve a realizar. Es muy útil para las
fallas transitorias o intermitentes.
Redundancia física: Se agrega hardware o software
extra para que el sistema soporte el mal
funcionamiento de uno de sus componentes.
40
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Redundancy - Confiabilidad en Serie
La Confiabilidad de un conjunto de equipos en serie es el producto de la
confiabilidad de cada uno de los equipos.
Conf.A
Conf.B
Conf.C
N
R (t )   Ri (t )
i 1
Por ejemplo: R = 0,95 * 0,94 * 0, 99 = 0,884
La confiabilidad total de un sistema serie siempre será menor que la
confiabilidad de cualquiera de sus componentes.
41
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Redundancy - Confiabilidad en Paralelo
La Confiabilidad de un conjunto de equipos en paralelo
Conf.A
Conf.B
Conf.C
N
R (t )  1   (1  Ri (t ))
i 1
La Confiabilidad del conjunto es: ( Conf.A + Conf.B + Conf.C ) / n
Por ejemplo: R = 1 - ( 0,05 * 0,06 * 0, 01 ) = 0,99997
42
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Recovery - Redundancy
Passive redundancy
(warm restart/dual redundancy/triple redundancy).

Un componente (the primary) responde a los eventos e
informa a otros componentes (the standbys) acerca de
actualizaciones del estado en pos de estar
sincronizados.

Ante una falla, el sistema verifica el estado de
actualización de la copia secundaria.
 Esta
táctica tiene una gran dependencia en que los
componentes standby sean capaces de tomar el
control.
 Se
pueden forzar switchovers periódicamente para
aumentar la disponibilidad del sistema.

44
Notar que la sincronización es responsabilidad del
componente primario que podría usar atomic
broadcasts (pequeñas transacciones del conector que
son reliables) para asegurar sincronización.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Redundancy - Rejuvenecimiento
Si bien los clusters (failover, load balancing ) proveen alta
disponibilidad, se busca soluciones para lo que se
denomina ―Envejecimiento de Software‖ (software
aging), que lleva a fallas de sistema.
La tendencia es que los procesos se ―auto-sanen‖ (sealfhealing)
 < MTTR vs > MTBF
Existen dos formas de realizarlo
Por tiempo
 Reinicio a intervalos constantes.
En forma predictiva
 Analizando parámetros del contexto
45
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Recovery - Redundancy
Active redundancy (hot restart).

Todos los componentes responden en paralelo,
consecuentemente poseen el mismo estado

Solo la respuesta de un componente es usada.

Si ocurre una falla, el tiempo de caída es muy
reducido.
 Usualmente
aplica a configuraciones client/server
donde la latencia requerida es baja aún ante caídas.
46

Si son state-full, requerimos que todas las
instancias del mismo componente reciben los
mismos mensajes para que estén sincronizadas
(el estado se actualiza en paralelo).

Aquí los componentes envejecen también en
paralelo.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Recovery - Redundancy
Spare

Una plataforma completa es configurada para
reemplazar diferentes componentes que podrían
fallar

El reemplazo implica reiniciarla con la correcta
configuración de software y setear su estado
interno en caso necesario.

Hacer checkpoint del estado del sistema de
manera periódica y registrando los cambios de
estado (transaction log) facilita la sincronización
de estado
 Una
estación de trabajo de repuesto es un ejemplo
frecuente de este modelo.
47
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Sincronización– Checkpoint & Restart
Los checkpoint se pueden realizar desde la aplicación por
intervalos fijos o en lugares de determinados
 Una desventaja es que no se pueden recuperar sucesos
únicos que ocurrieron después del checkpoint (en caso
de utilizarlo)
48
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Sincronización–Checkpoint Par de
procesos
Ambos corren versiones idénticas de software.
El procesador primario genera chekpoints y los envía al
secundario.
Al detectarse una falla el procesador secundario retoma a
partir del ultimo checkpoint.
 Se puede reemplazar el procesador primario
49
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Voting
Un “Voter” recibe entradas ( no binarias ) y replica en la salida el valor que
tenga la mayoría de sus entradas, en este ejemplo vemos un TMR
Por lo tanto, como las unidades A1, A2 y A3 son exactamente iguales,
deberían dar los mismos valores a la entrada del Voter.
¿ Y si falla el Voter ? [SPOF]
50
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Redundancia – Sistemas Duplex
Los dos procesadores ejecutan lo
mismo.
Si las salidas coinciden se asume
que el resultado es correcto.
Si hay diferencia: ¿ Cuál falló ?
Soluciones posibles:
1 - Test de ambos procesadores.
2 – Utilizar un tercer procesador
para determinar el resultado correcto
3 – Implementar un Sistema Duplex
de backup.
51
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
The Byzantine General’s Problem
Todo sistema de software que se considere
confiable debe lidiar con la falla de uno o más de
sus componentes. Un componente que falle puede
exhibir un tipo de comportamiento anómalo difícil
de identificar.

por ejemplo enviar información anómala a
diferentes partes del sistema.
Este problema se conoce como the Byzantine
Generals Problem.
LESLIE LAMPORT, The Byzantine Generals Problem
http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf
52
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
The Byzantine General’s Problem
Principios
1. Todo general leal debe obtener la misma
información v(1) . . . . , v(n).
2. Si el general ith es leal, entonces el valor que
envía debe ser usado por todo general leal como
el valor v(i).
LESLIE LAMPORT, The Byzantine Generals Problem
http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf
53
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
The Byzantine General’s Problem
 Liutenant 2 es traidor
 Commander es traidor
54
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
The Byzantine General’s Problem
Algorithm OM(0).
(1) The commander sends his value to every lieutenant.
(2) Each lieutenant uses the value he receives from the commander, or uses
the value RETREAT if he receives no value.
Algorithm OM(m), m > O.
(1) The commander sends his value to every lieutenant.
(2) For each i, let vi be the value Lieutenant i receives from the commander,
or else be RETREAT if he receives no value.
Lieutenant i acts as the commander in Algorithm OM(m - 1) to send the value
vi to each of the n - 2 other lieutenants.
(3) For each i, and each j <> i, let vj be the value Lieutenant i received from
Lieutenant j in step (2) (using Algorithm OM(m - 1)), or else RETREAT if he
received no such value. Lieutenant i uses the value majority (v1 . . . . . vn-1 ).
LEMMA. For any m and k, Algorithm OM (m ) is satisfactory if there are
more than 2k + m generals and at most k traitors.
LESLIE LAMPORT, The Byzantine Generals Problem
http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf
55
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Métodos Multi-Version
Están basados en usar dos o mas versiones del sistema,
y ejecutarlos en secuencia o en paralelo
Recovery Blocks
Recovery Blocks Distribuido
N-Versiones
56
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Recovery Block
Utiliza múltiples versiones de software
Una sola versión corre a la vez, si se detecta que falla se
ejecuta una de backup
Cuando ―Primary‖
termina su ejecución,
envía su salida para
test.
En caso de falla, la
primera versión
alternativa corre
nuevamente desde el
checkpoint mas
cercano.
57
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Recovery Block Distribuido
 El Primario del nodo 1 corre en paralelo con el Secundario del
nodo 2
 Si falla el Primario en nodo1 se utiliza la salida del nodo 2
 El nodo 2 sigue su ejecución hasta fallar.
 La ventaja es que no se debe esperar que el sistema haga
rollback.
58
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fault Prevention
Removal from service

Bajo condiciones de falla detectadas desde un componente,
es posible removerlo de servicio de manera anticipada.
Process monitor

Una vez que una falla en un procesador es detectada, un
proceso de monitoreo puede elimiar el proceso anómalo y
crear una nueva instancia.
Transactions

Una transacción es un conjunto de pasos secuenciales tal
que el conjunto se realiza de forma completa o ninguno de
los pasos individuales es efectuado.
Compensación

59
En casos que no sea posible concentrar el estado en un
componente, debemos manejar mecanismos de ―undo‖ o de
compensación.
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Tactics - Estructura
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Fin
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2009
Descargar