Documentos de Académico
Documentos de Profesional
Documentos de Cultura
§ Znode
q Almacenado en memoria
q Espacio de nombres
jerárquicos
q No están pensados para
almacenamiento general
(varios KB)
§ Tipos:
q Normales
q Efímeros
q Secuenciales
§ Los clientes pueden manipular los
znodes a través del API de
ZooKeeper
client
client
client
server replica
client
client
client
server replica
client
client
server replica
•broadcast atómico
client
client
client
server replica
§ Broadcast atómico
Entrega de mensajes fiable, si un mensaje se entrega a un
q
§ Modelo síncrono
Relojes sincronizados
q
§ Modelo de sistema:
Procesos secuenciales {P1, P2, ...Pn} que ejecutan un
q
algoritmo local
q Canales de comunicación
§ Eventos en Pi
q Ei = {ei1, ei2, ...ein}
§ Tipos de eventos locales
q Internos (cambios en el estado de un proceso)
q Comunicación (envío, recepción)
e e e e 01 02 03 04 e05
P0
§ Diagramas espacio-tiempo
P1
e11 e12 e13
§ Algoritmo local:
q Un proceso cambia de un estado a otro (evento inerno)
q Un proceso cambia de un estado a otro y envía un mensaje a otro
proceso (evento de envío)
q Un proceso recibe un mensaje y cambia su estado (evento de
recepción)
§ Restricciones
q Un proceso p solo puede recibir un mensaje después de
haber sido enviado por otro
q Un proceso p solo puede cambiar del estado c al estado d si
está actualmente en el estado c
q ≤H Es transitiva
§ Si a ≤H b y b ≤H c entonces a ≤H c
q ≤H es reflexiva.
§ a ≤H a para cualquier evento
•p1
•p2
•p3
•time
•Eventos relacionados
causalmente
•p1
•Mismo color ~ orden causal
•p2
•p3
•tiempo
•p1
•p2
•p3
•tiempo
•p1
•p2
•p3
•tiempo
§ Sincronización de relojes
§ ordenación de eventos
§ Exclusión mutua distribuida
§ Algoritmos de elección
§ Comunicación multicast y ordenación de mensajes
§ Problemas de consenso
§ Detección de interbloqueos
§ Asignación de recursos
§ Planificación
§ Tolerancia a fallos
P1
m1 m3 m4
m2 m5
P2
Observador
e1 e2 e3 e4 e5
Observador
e1 e2 e3 e4 e5
P1
m1
m2
P2
Observador
e2 e1
?
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •42
¿Marcas de tiempo en de los procesos?
1 3
P1
m1
m2
6 8
P2
Observador
e1-6 e2-3
?
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •43
¿Marcas de tiempo en de los procesos?
1 3
P1
m1
m2
6 8
P2
Observador
e1-6 e2-3
P1
m1 m3 m4
m2 m5
P2
Observador e1 e2 e3 e4 e5
•p1
•0 •1 •2 •3 •4
•p2
•0 •4 •5
•p3
•0 •1 •6
•tiempo
un algoritmo diferente
§ Algoritmo de Welch
q En lugar de avanzar el reloj en respuesta a los mensajes que
llegan, se retrasa la entrega de esos mensajes hasta que se
alcanza el valor de tiempo
q Los mensajes que llegan se almacenan en un buffer FIFO si
su marca de tiempo es menor que la marca de tiempo del
proceso receptor
e21 e22
P2
(1) (3)
•p1
•[1,0,0] •[2,0,0] •[3,0,0] •[4,0,0] •[5,0,0]
•p2
•[0,1,0] •[4,2,0] •[4,3,0]
•p3
•[0,0,1] •[0,0,2] •[4,3,3]
•tiempo
§ Entrega causal
q sendi(m) ≤H sendj(m´) entonces entregak(m) ≤H entregak(m´)
§ La entrega causal requiere retrasar la entrega de un mensaje a un
proceso hasta estar seguros que entre dos envíos no hay uno
intermedio
§ Se puede implementar con relojes vectoriales
P1
m
P2
m’
P3
0 1 2 0 1 2 0 1 2
entrada salida
entrada OK
OK No hay respuespuesta
(bloquea al cliente)
C C C
•64
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Anillo con testigo
§ Los procesos se ordenan conceptualmente como un anillo
§ Por el anillo circula un testigo
§ Cuando un proceso quiere entrar en la SC debe esperar a
recoger el testigo
§ Cuando sale de la SC envía el testigo al nuevo proceso del
anillo
•65
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Ejemplo. Algoritmo de votación de
Maekawa
§ Idea: no solicitar permiso de todos los procesos, solo de un
subconjunto
q Los subconjuntos deben solaparse
§ A cada proceso Pi se le asocia un conjunto de votantes
q { Vi | i = 1, …, N }
§ Pi está en Vi
§ Vi Ç Vj ≠ Æ
§ Todos subconjuntos de igual tamaño
§ Cada proceso Pj está contenido en M subconjutos
votantes
§ Solución optima
q K~ N
q M=K
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •66
Algoritmo de votación de Maekawa
enter():
state := WANTED;
Multicast request to processes in Vi - { Pi };
Wait until (K - 1) responses are received;
state := HELD;
Algoritmo de anillo
q
•70
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Variantes del problema
§ Suposiciones:
q Comunicación síncrona
q Procesos completamente conectados
q Entrega de mensajes fiable
•74
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Algoritmo del matón. Ejemplo
§ Cuando un proceso P observa que el coordinador no responde
inicia una elección:
•75
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Algoritmo del matón. Ejemplo
•76
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Algoritmo LCR (basado en anillo)
0 3
7 4
6 5
5
•79
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Comunicación multicast
§ Problemas de fiabilidad:
q Alguno de los mensajes se puede perder.
q El proceso emisor puede fallar después de realizados
algunos envíos. En este caso algunos procesos no recibirán
el mensaje.
P1 P2 P3 P4
A B
Tiempo
A B
t2
t1
tiempo
c1
c2 c3
cola de cola de
espera entrega
Peticiones
•94
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Método distribuido
§ Birman y Joseph 1987
§ Cada proceso q en el grupo almacena:
q Aq: mayor número de secuencia acordado que se ha observado hasta el
momento
q Pq: su mayor número de secuencia propuesto
q Los identificadores deben incluir el número de proceso para asegurar un orden
total
§ Cuando un proceso p realiza un BCAST envía el mensaje al resto
§ Cada proceso q que recibe el mensaje de p
q Propone Pq=Max(Aq, Pq) + 1
q Almacena (m, Pq) en su cola y lo marca como no entregable
q Envía Pq al emisor del mensaje (p)
§ El proceso q recibe todos los números de secuencia propuesto y selecciona el mayor
A como el siguiente número de secuencia acordado y lo envía a todos
q En q se fija Aq = Max(Aq, A) y se marca el mensaje como entregable
q Se reordena la cola y si está el primero se entrega
•95
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Ejemplo
•Nodo 1 •Nodo 2 •Nodo 3
•A1 = 14 •A12 = 15 •A3 = 16
•Multicast (M1) •Multicast(M2) •Multicast(M3)
•Inicialmente:
• Los tres nodos realizan un multicast simultáneo
•Inicialmente:
• Los tres nodos realizan un multicast simultáneo
M3 M1 M2 M2 M1 M3 M1 M3 M2
U U U U U U U U U
•Etapa 1:
• Los mensajes llegan a los receptores en orden distinto
• Se les propone un número de secuencia, Pq=Max(Aq, Pq) + 1
• (se añade identificador de proceso)
• Se insertan en las colas y se marcan como no entregables (U)
M3 M1 M2 M2 M1 M3 M1 M3 M2
U U U U U U U U U
•Etapa 2:
• El Nodo 1 recibe las marcas asociada a M1 envidas por el nodo 2 (17.2) y 3 (17.3)
• y calcula el máximo de las tres, y se las envía al resto (17.3)
M3 M2 M1 M2 M1 M3 M1 M3 M2
U U D U D U D U U
•Etapa 2:
• Se marca M1 como entregable y se reordenan las colas
• M1 se puede entregar en el nodo 3 porque ser el primero de la cola
M3 M2 M1 M2 M1 M3 M3 M2
U U D U D U U U
•Etapa 2:
• M1 se entrega en el nodo 3
M3 M2 M1 M2 M1 M3 M3 M2
U U D U D U U U
•Etapa 3:
• El Nodo 2 recibe las marcas asociada a M2 envidas por el nodo 1 (17.1) y 3 (19.3) ,
• Calcula el máximo (19.3)
M3 M2 M1 M2 M1 M3 M3 M2
U U D U D U U U
•Etapa 3:
• El Nodo 2 recibe las marcas asociada a M2 envidas por el nodo 1 (17.1) y 3 (19.3) ,
• Calcula el máximo (19.3)
• Se la envía al resto
M3 M1 M2 M1 M3 M2 M3 M2
U D D D U D U D
•Etapa 3:
• M2 se marca como entregable y se reordenan las colas
M3 M1 M2 M3 M2 M3 M2
U D D U D U D
•Etapa 3:
• M2 se marca como entregable y se reordenan las colas
• M1 se entrega en el nodo 2
M3 M1 M2 M3 M2 M3 M2
U D D U D U D
•Etapa 4:
• El Nodo 3 recibe las marcas asociada a M3 envidas por el nodo 1 (15.1) y 3 (18.2)
• Calcula el máximo de todas (18.3)
M3 M1 M2 M3 M2 M3 M2
U D D U D U D
•Etapa 4:
• El Nodo 3 recibe las marcas asociada a M3 envidas por el nodo 1 (15.1) y 3 (18.2)
• Calcula el máximo de todas (18.3)
• Se las envía al resto
M1 M3 M2 M3 M2 M3 M2
D D D D D D D
•Etapa 4:
• Se marca M3 como entregable y se reordenan las colas
• Se pueden entregar todos los mensajes en todos los nodos
• El orden de entrega: M1, M3 y M2 (se asegura el orden de entrega en todos los nodos)
•109
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Ejemplo
(0,0,0) (0,1,0)
P1
(0,1,1)
(0,0,0)
P2
(0,1,0) (0,1,1)
•110
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Ejemplo
§ Vector enviado por el proceso 0: (4, 6, 8, 2, 1, 5)
§ Vector en el proceso 1: (3, 7, 8, 2, 1, 5)
§ Vector en el proceso 2: (3, 5, 8, 2, 1, 5)
§ ¿Se puede entregar el mensaje enviado por el 0?
•111
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Ejemplo
§ Vector enviado por el proceso 0: (4, 6, 8, 2, 1, 5)
§ Vector en el proceso 1: (3, 7, 8, 2, 1, 5)
§ Vector en el proceso 2: (3, 5, 8, 2, 1, 5)
§ ¿Se puede entregar el mensaje enviado por el 0?
q Al 1 si:
§ Es el siguiente en la secuencia de mensajes recibidos del 0 y
no se han perdido mensajes.
q Al 2 no:
§ Es el siguiente en la secuencia de mensajes recibidos del 0.
§ Le falta un mensaje del proceso 1
•112
•Félix García Carballeira •Sistemas Distribuidos (2017-2018)
Problemas de consenso
valor
Objetivo: que el conjunto de procesos consensuen un valor
q
(terminación)
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •113
Protocolos de consenso
P1
v1
v3
P3
Algoritmo de
v2 consenso
P2
§ Transacciones distribuidas
§ En grupos de procesos
§ Elección de líder
§ Sincronización de relojes
§ Servidores replicados
ok to commit=> guardar
la petición en un
¡Commit! Hacer los cambios
área temporal y responder ok permanentes
•ok to
commit?
•ok to
commit?
•ok
•ok to
commit?
•commit •ok
•Hacer los
cambios
permanentes
•Coordinador A B C
•ok to
commit?
•ok •Proceso falla
•Coordinador A B C
•ok to
commit?
•ok •Proceso falla
•timeout
•Coordinador A B C
•ok to
commit?
•ok •Proceso falla
•abort
•Coordinador A B C
•ok to
commit?
•ok
•commit
§ ¿Por qué?
q En un sistema asíncrono: no se puede determinar si un
proceso ha fallado o no (puede ejecutar más lento o sus
mensajes pueden retrasarse)
§ No existe un detector de fallos
§ En sistemas síncronos 3PC asegura seguridad y terminación
§ 2PC no asegura terminación
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •129
Three-phase commit
•canCommit?
•yes Fase 1
•prepareCommit
Fase 2
•ACK
•doCommit
•haveCommitted Fase 3
•canCommit?
•yes Fase 1
§ READ
Se lee de R réplicas, se queda con la copia con la última
q
versión
§ WRITE
q Hay que asegurarse que todas las réplicas se comportan
como una sola (seriabilidad)
q Se realiza en primer lugar una operación READ para
determinar el número de versión actual.
q Se calcula el nuevo número de versión.
q Se inicia un 2PC para actualizar el valor y el número de
versión en W o más réplicas.
•0
•1
•2
R1W1 R2 W2 RT WT
1 5 1 5 1 25
1 5 2 4 2 20
1 5 3 3 3 15
2 4 2 4 4 16
2 4 3 3 6 12
3 3 3 3 9 9
¿Cuál se elige?
•Félix García Carballeira •Sistemas Distribuidos (2017-2018) •137
Replicación de datos utilizando 2PC
§ Sea un conjunto de procesos {P0, P1,...,Pn} que mantienen una réplica sobre
las que se hacen operaciones readi, updatei
§ Objetivo: definir dos operaciones distribuidas READ y UPDATE que son
disponibles incluso cuanto t < n procesos fallan y devuelven fallos
indistinguibles de aquellos que no fallan.
§ Se denota como qr el número de réplicas que deben leerse para una
operación READ
§ Se denota como qu el número de réplicas que deben actualizarse para un
UPDATE.
§ Para utilizar esquemas basados en quorum se necesita:
q qr + qu > n
q qu+qu > n
§ UPDATE (Continuación)
q Una réplica indica abortar si ella tiene un nº de versión
mayor
q En caso contrario bloquea las READ y espera en ok to
commit
q El coordinador comprometerá el resultado si sólo recibe
mensajes commit de al menos qu réplicas. En caso contrario
aborta.
q Las operaciones READ se retrasan durante el estado ok to
commit.
q Si llegan operaciones UPDATE en ok to commit las aborta
§ Fase 1 (Propuesta):
q Un nodo decide hacer una propuesta (líder)
q Elige N > Nh
q Envía (propuesta, N) a todos los nodos
q Cuando se recibe (propuesta, N)
IF (N < Nh)
Responder rechazar
ELSE
Nh = N
Responder (propuesta-OK, Na, Va)
No aceptará ninguna propuesta futura con valor < N
§ Fase 2 (Aeptar):
q IF el lider obtiene una mayoría de OK
§ V = valor del Na recibido más alto
§ IF (V = null) el lider elige cualquier valor V
§ Envía (aceptar, N, -V) a todos los nodos
q IF el lider no obtiene mayoría
§ Espera y reinicia el protocolo
q Cuando un nodo recibe (aceptar, N, V)
IF (N < Nh)
Responde con rechazar
ELSE
Na = N; Va = V; Nh=N
Responder OK
§ Fase 3 (decidir)
q Si el lider recibe OK de una mayoría
§ Envía (decidir, Va) a todos los nodos
q Sino espera (aleatoriamente) y reinicia el protocolo
nodo k
nodo i nodo j
0
X
1 nodo k
1
nodo i 0
nodo j
0
X
1 nodo k
0
nodo i 0
nodo j
1 0
nodo i 0
nodo j
1 nodo k
0
nodo i 0
nodo j
* * * *
Nodo 4 Nodo 2
* * * E * A * *
Nodo 3
* * A *
* * * *
Nodo 4 Nodo 2
E A A E R A A E
Nodo 3
R A A E
V3(1) V3(2) V3(3) V3(4)
* * * *
Nodo 4 Nodo 2
E A A E V4(j) V2(j) R A A E
R E V1(j) V1(j) R R
V2(j)
Nodo 3 V3(j)
R A R E
R A A E V3(j)
R A V3(j) V4(j) E A
E R V1(j)
Vi(1) Vi(2) Vi(3) Vi(4) Vi(1) Vi(2) Vi(3) Vi(4)
R E V2(j)
E A V3(j)
Vi(1) Vi(2) Vi(3) Vi(4)
Vi(j) -> La observación que de j dice i
Sj Si
Cij
Lij={m , …, m } 1 k
m3 m3
m4 ya ha
m4 m4
llegado
m5 m5
Tipos de mensajes:
• (order 10, $100): se piden 10 elementos y se transfiere $100
• (5 widgets): se envían 5 elementos