1
Sistemas Distribuidos
Tiempo, causalidad y estado
global
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Enero, 2021
Loja, Ecuador
3
1 Introducción
2 Tiempo físico
2.1 Sincronización externa
2.2 Sincronización interna
2.3 Compensación de desviaciones
2.4 Ejemplos
3 Tiempo lógico y orden de eventos
3.1 Modelo de eventos
3.2 Relojes lógicos de Lamport
3.3 Vectores de tiempos
4 Estado global y consistencia
4.1 Modelo del sistema
4.2 Determinación de estados globales consistentes
4.3 Algoritmo de Chandy y Lamport
Contenido
4
Introducción
• En un sistema distribuido el estado global se encuentra distribuido entre los nodos
• reloj estándar en cada nodo
• comunicación entre nodos: retardos
• cada nodo posee una visión subjetiva del estado global
• Ejemplos:
• en el instante t1 se manda un mensaje desde el nodo A al nodo B, que lo recibe
en el instante t2,
• con t2 < t1
• establecer con precisión absoluta el montante de los depósitos en todas las cuentas
bancarias de todos los bancos del mundo en un instante de tiempo dado
5
Introducción
• Propuesta de solución:
• un único reloj preciso + red dedicada para transmitir la señal sin retardos
• no es práctico (coste), o es inviable (Internet)
• Solución: tiempo distribuido
• cada nodo posee su propio reloj (tiempo físico local)
• los relojes son imprecisos: necesario ajustarlos periódicamente a un tiempo
físico de referencia
• Por otra parte, la gestión consistente del estado global requiere al menos ordenar
los eventos producidos por los nodos (causalidad)
• tiempo lógico
6
Introducción - Sincronización de relojes
• Cuando cada máquina tiene su propio reloj, un evento que ocurrió después de otro
evento puede, no obstante, asignarse una hora anterior.
7
Tiempo Físico
• Los relojes de los computadores son de cuarzo
• La frecuencia de oscilación varía con la temperatura
• deriva: ~10 -6
(90ms en un día, 1s cada 11,6 días)
• Relojes atómicos: gran precisión, muy caros
• deriva: ~10 -13
(9ns en un día, 1s cada 300000 años)
• precio: $50.000 - $100.000 !!!
• Tipos de sincronización:
• conocer el instante preciso en que se produce un evento en un nodo:
sincronización externa
• medir el intervalo entre dos eventos producidos en nodos diferentes (por
ejemplo, envío y recepción de un mensaje), usando los relojes locales de cada
nodo: sincronización interna
• la interna no implica la externa, pero al revés sí
8
Tiempo Físico
Definiciones:
• Segundo solar o astronómico: 1/86.400 del periodo de rotación de la Tierra
(mean solar second)
⚫ pese a ser perfectamente válido para las situaciones de la vida cotidiana, la
Tierra no gira a velocidad constante (va perdiendo lentamente velocidad), por
lo que no sirve como referencia
• Segundo atómico (IAT, 1967): 9.192.631.770 periodos de transición en un átomo
de Cesio-133. Los relojes atómicos miden este tiempo
⚫ deriva de 3*10-8
con el segundo solar (~1 s al año)
• Tiempo universal coordinado (UTC): medido en segundos atómicos, sincronizado
con tiempo astronómico (diferencia > 900 ms ⇒ inserción de 1 s)
9
Tiempo Físico
Definiciones:
• Tiempo físico de referencia: normalmente UTC
• Resolución: periodo entre dos actualizaciones del registro del tiempo local
⚫ debe ser menor que el intervalo de tiempo mínimo entre dos eventos
producidos consecutivamente en el nodo
• Desviación (offset, skew, θ ): diferencia entre el tiempo local y el tiempo físico de
referencia en un instante
• Deriva (drift, δ ): desviación por unidad de tiempo (lo que adelanta o atrasa el
reloj)
• Precisión (accuracy): desviación máxima que se puede garantizar en el ajuste de
un reloj
10
Clock Synchronization Algorithms
La relación entre la hora del reloj y la hora UTC cuando los relojes marcan a diferentes velocidades
11
Sincronización externa
• Sincronización: procedimiento por el que se ajusta el valor de un reloj a un
tiempo físico de referencia con una precisión preestablecida
• Referencias de tiempo UTC se difunden periódicamente por radio
• velocidad de propagación: ~3*108
m/s (1.000 km: ~3 ms)
• velocidad variable: pérdida de precisión
• Precisión de receptores comerciales:
• Estaciones terrestres: 0,1 - 10 ms
• Satélites geoestacionarios (35.786 km): 0,5 ms
• Satélites GPS (20.200 km): 1 μs
• Usos: servicio horario preciso, contabilidad...
12
Sincronización interna
• Para muchas aplicaciones es más importante mantener bien sincronizados entre sí
los relojes locales que conseguir una gran precisión en la sincronización externa
• permite ordenar eventos (causalidad)
• Propuesta de solución: receptor UTC en cada nodo
• no es práctico (coste)
• Solución: algoritmos de sincronización interna
• centralizados: basados en un servidor específico
• distribuidos: estadísticos
13
Algoritmos centralizados
• Principio:
• utiliza un servidor de tiempos que proporciona referencias fiables (por ejemplo,
un servidor que se sincroniza periódicamente con UTC)
• el cliente envía una petición al servidor (m req )
• el servidor contesta enviando la referencia de tiempo en otro mensaje (m t )
• retardo de los mensajes: min + d
• min es el tiempo mínimo de transmisión. Es constante y se puede determinar a
partir de las características de la red
• d es variable y depende de la carga del sistema y de la red
• Ejemplo: algoritmo de Cristian (1989)
14
Algoritmo de Cristian
• t(m t ): tiempo devuelto por el servidor en el mensaje m t
• D: tiempo desde que se envía m req y se recibe m t
• min: tiempo mínimo de transmisión de un mensaje
• Suposición: el servidor asigna la referencia t(m t ) en la mitad del intervalo
• D-2*min (instante t en el cliente). Así se logra la mejor precisión
• Desviación: θ = t - t(m t ) = t1 - D/2 - t(m t )
• Precisión = D/2 – min
15
Algoritmo de Cristian- Ejemplo
El cliente está
retrasado 3
unidades de tiempo
con el servidor
cliente
servidor
30 31
32 33
30 31
32 33
16
Algoritmo de Cristian- Ejemplo
El cliente pide el valor
del reloj al servidor en
T0 (según Cc)
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
17
Algoritmo de Cristian- Ejemplo
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
El cliente pide el valor
del reloj al servidor en
T0 (según Cc)
El servidor contesta con
el valor de su reloj Cs
18
Algoritmo de Cristian- Ejemplo
El cliente pide el valor del
reloj al servidor en T0
(según Cc)
El servidor contesta con el
valor de su reloj Cs
La respuesta llega al cliente
en T1 (según CS)
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
19
Algoritmo de Cristian- Ejemplo
El cliente pide el valor del
reloj al servidor en T0
(según Cc)
El servidor contesta con el
valor de su reloj Cs
La respuesta llega al cliente
en T1 (según CS)
C = Cs + (T1 – T0) / 2
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
C = 40 = 37 + (38 - 32) / 2
20
Algoritmo de Cristian- Ejemplo
El cliente pide el valor del
reloj al servidor en T0
(según Cc)
El servidor contesta con el
valor de su reloj Cs
La respuesta llega al cliente
en T1 (según CS)
C = Cs + (T1 – T0) / 2
Si C > Cc, Cc = C
cliente
servidor
30 31 32 33 34 35 36 37 38 41 42 43 44 45 46
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
C = 40 = 37 + (38 - 32) / 2
40
21
Algoritmo de Cristian - Ejemplo
El cliente pide el valor del reloj al
servidor en T0 (según Cc)
El servidor contesta con el valor de
su reloj Cs
La respuesta llega al cliente en T1
(según CS)
C = Cs + (T1 – T0) / 2
Si C > Cc, Cc = C
Si C < Cc, se detiene Cc las
siguientes Cc-C unidades de tiempo
cliente
servidor
36 37 38 39 40 41 42 43 44 44 44 44 45 46
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
C = 40 = 37 + (44 - 38) / 2
Detener durante 44 – 40 = 4 unidades
22
Algoritmo de Cristian - Análisis
• Se asume que el tiempo de
envío de ambos mensajes es
prácticamente igual
• En T1 el valor de Cs se
habrá incrementado en (T1 –
T0) / 2
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
C = Cs + (T1 – T0) / 2
23
Algoritmo de Cristian - Análisis
• Si uno de los dos mensajes
tarda más en ser transmitido, el
ajuste no es correcto
• Generalmente la duración de
ambos mensajes es igual
cliente
servidor
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
T0
Cs
T1
24
Algoritmo de Cristian - Análisis
• En todo caso, la sincronización perfecta es imposible (con este algoritmo o con cualquier
otro)
• El correcto funcionamiento de una aplicación distribuida podrá depender de los valores de
los relojes locales, solo si tolera el margen de error inherente al algoritmo de sincronización
utilizado
25
Ejemplo del algoritmo de Cristian (3 peticiones)
¿Qué petición debería usar el cliente? Calcula la precisión y desviación obtenidas
Precisión = 10 ms Desviación = 1406 ms
Conociendo que el tiempo mínimo de transmisión es de 7 ms,
¿cambia en algo la respuesta anterior?
Precisión = 3 ms
¿Qué se necesitaría para obtener una precisión de 2 ms?
Siendo min = 7 ms, una petición con D ≤ 18 ms
26
Ejemplo del algoritmo de Cristian (3 peticiones)
27
Ejemplo del algoritmo de Cristian (3 peticiones)
28
Algoritmos distribuidos
⚫ Principio estadístico de los algoritmos distribuidos:
⚫ las diferentes desviaciones de los tiempos locales tienden a cancelarse entre ellas
en torno a un tiempo medio que se puede tomar como referencia fiables para la
sincronización interna
⚫ Ejemplo: algoritmo de Berkeley (1989)
⚫ el coordinador solicita los tiempos a los demás nodos
⚫ el coordinador calcula un tiempo medio a partir de las medidas obtenidas,
excluyendo las respuestas espurias y las que no llegan en plazo
T = Σ(t(m i ) - D i /2) / N
⚫ el coordinador envía a cada nodo su desviación con respecto a la media, para que
realice el ajuste
θ i = t(m i ) - D i /2 - T
⚫ si el coordinador falla, se elige un nuevo coordinador
29
Algoritmo de Berkeley
a)The time daemon asks all the other machines for their clock values
b)The machines answer
c)The time daemon tells everyone how to adjust their clock
30
Algoritmo de Berkeley
⚫ Grupo de nodos formados por
⚫ Un servidor, denominado S
⚫ N clientes, denominados Ci
⚫ Cada nodo dispones de su propio reloj local
⚫ El objetivo es sincronizar los relojes de todos los nodos entre si
⚫ De forma periódica, a iniciativa del servidor, todos los nodos sincronizan sus
relojes
31
Algoritmo de Berkeley
10001
10005
10000
9998
s
C2
C3
C1
Se tiene un servidor s
Se tiene un conjunto de clientes ci
32
Algoritmo de Berkeley
El servidor difunde su reloj en T0
T0 10000
10001
10005
10000
9998
s
C2
C3
C1 10000
10000
10000
33
Algoritmo de Berkeley
Los mensajes llegan a los clientes
T0 10000
10006
10010
10005
10003
s
C2
C3
C1 10000
10000
10000
Los mensaje llegan 5 unidades de tiempo
Para simplificar, asumimos que llegan a la
vez
34
Algoritmo de Berkeley
Cada cliente calcula la diferencia Di entre su reloj local y el que ha notificado en servidor de msj
Di = T1 – T2
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
10006
10010
10005
10003
s
C2
C3
C1 10000
10000
10000
35
Algoritmo de Berkeley
Y cada cliente notifica dicha diferencia al servidor
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
D1 = 3
D2 = 6
D3 = 10
10006
10010
10005
10003
s
C2
C3
C1
36
Algoritmo de Berkeley
La respuesta de cada cliente llega en T1i
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1 = 3
D2 = 6
D3 = 10
100011
10015
10010
10008
s
C2
C3
C1
Los mensaje llegan 5 unidades de tiempo
Para simplificar, asumimos que llegan a la
vez
37
Algoritmo de Berkeley
Se ajusta la diferencia notificada Di’ = Di - (T1i – T0) / 2
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
100011
10015
10010
10008
s
C2
C3
C1
38
Algoritmo de Berkeley
Se calcula la diferencia media, incluyendo al servidor D = ΣDi / (N + 1)
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
D (-2 + 1 + 5 + 0) / 4 = 1
100011
10015
10010
10008
s
C2
C3
C1
39
Algoritmo de Berkeley
El servidor ajusta su reloj incrementándolo en D
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
D (-2 + 1 + 5 + 0) / 4 = 1
100011
10015
10001
+1 =
10011
10008
s
C2
C3
C1
40
Algoritmo de Berkeley
Se notifica el ajuste Ai = D – Di a cada cliente
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
D (-2 + 1 + 5 + 0) / 4 = 1
A1 1 - (-2) = 3
A2 1 – 1 = 0
A3 1 – 5 = -4
100011
10015
10011
10008
s
C2
C3
C1
A2 = 0
A3 = -4
A1 = 3
41
Algoritmo de Berkeley
Los mensajes llegan a cada cliente
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
D (-2 + 1 + 5 + 0) / 4 = 1
A1 1 - (-2) = 3
A2 1 – 1 = 0
A3 1 – 5 = -4
10016
10020
10016
10013
s
C2
C3
C1
A2 = 0
A3 = -4
A1 = 3
Los mensaje llegan 5 unidades de tiempo
Para simplificar, asumimos que llegan a la
vez
42
Algoritmo de Berkeley
Cada cliente ajusta su reloj incrementándolo en Ai (si el ajuste el negativo, se programa una ajuste
graudal)
T0 10000
D1 10003 – 10000 = 3
D2 10006 – 10000 = 6
D3 10010 – 10000 = 10
T1i 10010
D1’ 3 – (10010 – 10000) / 2 = -2
D2’ 6 – (10010 – 10000) / 2 = 1
D3’ 10 – (10010 – 10000) / 2 = 5
D (-2 + 1 + 5 + 0) / 4 = 1
A1 1 - (-2) = 3
A2 1 – 1 = 0
A3 1 – 5 = -4
10016
+ 0 =
10016
10020
+ (-4) =
10016
10016
10013
+ 3 =
10016
s
C2
C3
C1
A2 = 0
A3 = -4
A1 = 3
43
Algoritmo de Berkeley
Consideraciones
• No persigue sincronizar todos los relojes con el instante “real”, sino llegar a un
acuerdo entre los nodos
• Si alguna diferencia Di es muy distinta a las demás, no se tiene en cuenta
• Si el servidor falla, se inicia un algoritmo de elección de lider para escoger otro
servidor
• La sincronización exacta es imposible debido a la variabilidad del tiempo en la
transmisión de los relojes
44
Algoritmo de Berkeley
• Calcula el tiempo medio para la sincronización y la desviación a enviar a cada nodo
Tiempo medio = 10:54:24.067
• Usando el método de Cristian, calcula la precisión en el ajuste de cada nodo al
sincronizarse (min no se conoce)
D/2
45
Algoritmo de Berkeley
46
Ejemplos
47
Ejemplos
Distribuited Time Server (DTS)
• algoritmo distribuído
• servidores (time servers): UTC
• clientes (time clerks)
48
Ejemplos
Network Time Protocol (NTP)
⚫ estándar en Internet
⚫ proporciona sincronización redundante con UTC
⚫ Estructurado en capas (strata) de servidores de tiempo
⚫ servidores primarios (strata 1): referencias UTC fiables
⚫ servidores de nivel 2 (strata 2): sincronizados con primarios
⚫ Modos de operación:
⚫ red local con soporte adecuado: modo multicast
⚫ mayor precisión: modo de llamada a procedimiento
⚫ mejor sincronización interna: modo simétrico
⚫ La red de servidores se puede reconfigurar
49
Ejemplos
Network Time Protocol (NTP): modo asimétrico
50
Ejemplos
Network Time Protocol (NTP): ejercicio
51
Tiempo lógico y orden de eventos
⚫ A veces la precisión obtenida al sincronizar los relojes no nos permite usar el
tiempo físico para ordenar los eventos de los diferentes nodos de un sistema
distribuido
⚫ siempre es posible ordenar los eventos de un mismo nodo (si se respeta la
monotonicidad del reloj)
⚫ en cambio, relaciones de causalidad entre eventos de nodos diferentes pueden
verse distorsionadas
⚫ Muchas aplicaciones requieren únicamente ordenar los eventos (y no tanto conocer
el instante exacto en que ocurrieron)
52
Modelo de eventos
⚫ Modelo de sistema: conjunto de procesos que comunican únicamente mediante
paso de mensajes
enviar (pi , mensaje)
recibir (pj , mensaje)
pi y pj son el emisor y el receptor del mensaje
⚫ Simplificación: un proceso por nodo/máquina
⚫ Cada proceso genera una secuencia de eventos. Identificamos tres tipos de eventos:
⚫ Envío de un mensaje (al ejecutar enviar)
⚫ Recepción de un mensaje (al ejecutar recibir)
⚫ Eventos locales/internos (resto de eventos, sin comunicación)
53
Modelo de eventos
⚫ Para ordenar los eventos de un mismo proceso bastaría con asociar a cada evento x el
tiempo local T(x) (si la resolución es suficiente)
⚫ Se dice que existe una relación de causalidad entre dos eventos del sistema (x → y,
“x ha sucedido antes que y”, “x happened before y”) si:
1. x e y son eventos del mismo proceso y T(x) < T(y)
2. x e y son los eventos enviar(m) y recibir(m) del mismo mensaje m
3.Existe otro evento z tal que x → z y z → y (cierre transitivo de la relación)
54
Modelo de eventos
⚫ Si entre dos eventos no hay relación de causalidad, se dice que son concurrentes:
x || y
P1
P2
P3
b enviar(m1)
c
recibir(m1)
d enviar(m2)
f
recibir(m2)
m1
m2
a
e
a → b b → c a → c a → f a || e e || d
55
Relojes lógicos de Lamport
⚫ Propuesto en 1978, para indicar relaciones de causalidad. Cada proceso Pi tiene su
reloj lógico local Ci , para asociar marcas de tiempo a sus eventos (un simple
contador asíncrono basta)
⚫ Algoritmo:
⚫ Inicialmente, Ci = 0, ∀i
⚫ Antes de un evento local o envío de mensaje en pi : Ci = Ci + 1
⚫ Cuando pj envía un mensaje m a pi , pj incluye el valor de su reloj lógico en el
mensaje, Cm . Al recibir dicho mensaje, pi actualiza su reloj local de la
siguiente manera:
(1) Ci = max(Ci , Cm ), (2) Ci = Ci + 1
– Problema: Ci (x) < Cj (y) no implica x → y
56
Relojes lógicos de Lamport
a
e
0
0
P1
P2
P3
b enviar(m1)
c
recibir(m1)
d enviar(m2)
f
recibir(m2)
0 1 2
3 4
1 5
a → b b → c a → c a → f a || e e || d
57
Relojes lógicos de Lamport - Ejemplo
P1
P2
P3
a b c
d e
f g h
Cada nodo dispone de un contador (reloj lógico)
Cp inicializado 0
0
0
0
58
Relojes lógicos de Lamport - Ejemplo
P1
P2
P3
a b c
d e
f g h
Cada ejecución de un evento (envió de mensaje) en un nodo p,
Incrementa el valor de su contador Cp en 1
0
0
0
1 2
1
59
Relojes lógicos de Lamport - Ejemplo
P1
P2
P3
a b c
d
e
f g h
Cada un nodo p recibe un mensaje, actualiza su reloj acorde a
Cp = max (Cp, Cm) + 1
0
0
0
1 2
1
2
1
1
3
3
60
Relojes lógicos de Lamport - Ejemplo
P1
P2
P3
a b c
d
e
f g h
Aplicando las reglas del algoritmo y al final queda
0
0
0
1 2
1
2
1
1
3
3
4
4
5 6
61
Relojes lógicos de Lamport - Ejemplo
P1
P2
P3
a b c
d
e
f g h
Se establecen un orden parcial. Puede convertirse en total
añadiendo el identificador del nodo como sufijo
1.1 2.1
1.3
3.2
3.1
4.2
5.3 6.3
a 1.1
f 1.3
b 2.1
c 3.1
d 3.2
e 4.2
g 5.3
H 6.3
62
Vectores de tiempo
Definición:
V1 < V2 ⇔∀i V1[i] =V2[i] and∃j V1[j] <V2[j]
• Existirá relación de causalidad entre dos eventos (x, y) si y sólo si
V(x) < V(y) o V(y) < V(x)
• Si no, los eventos son concurrentes
• Los vectores de tiempos permiten determinar relaciones de causalidad con
total precisión:
Vi(x) < Vj(y)⇔x →y
63
Vectores de tiempo
P1
P2
P3
b enviar(m1)
c
recibir(m1)
d enviar(m2)
f
recibir(m2)
[0,0,0]
[0,0,0]
[0,0,0]
a
e
[1,0,0]
[2,0,0]
[0,0,1]
[2,1,0] [2,2,0]
[2,2,2]
a → b b → c a → c a → f a || e e || d
64
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Cada nodo p dispone de un reloj vectorial Vp inicializado con todos sus elementos 0
65
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
[1,0,0] [2,0,0]
[0,0,1]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Un nodo p incrementa en 1 Vp[P] cada vez que envía el mensaje
66
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
[1,0,0] [2,0,0]
[0,0,1]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Un mensaje m enviado por un nodo p lleva asociado su reloj vectorial. Es decir, Vm = Vp
[2,0,0]
[0,0,1]
[1,0,0]
67
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
[1,0,0] [2,0,0]
[0,0,1]
[2,1,0]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N,
Vp[1] = max (Vp[i], Vm[i])
[2,0,0]
[0,0,1]
[1,0,0]
[3,0,0] [3,0,1]
[0,0,1]
68
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
[1,0,0] [2,0,0]
[0,0,1]
[2,1,0] [2,2,0]
[2,2,2]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N,
Vp[1] = max (Vp[i], Vm[i])
[2,0,0]
[0,0,1]
[1,0,0]
[3,0,0] [3,0,1]
[0,0,1]
[2,2,0]
[2,2,3]
69
Vectores de tiempo - Ejemplo
[0,0,0]
[0,0,0]
[0,0,0]
[1,0,0] [2,0,0]
[0,0,1]
[2,1,0] [2,2,0]
[2,2,2]
a → b b → c a → c a → f a || e e || d
P1
P2
P3
a b c
d
e
f g h
Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N,
Vp[1] = max (Vp[i], Vm[i])
[2,0,0]
[0,0,1]
[1,0,0]
[3,0,1]
[2,2,0]
[2,2,3]
[1,0,0] < [2,2,0] a → e
[0,0,1] no < [2,2,0] f || e
[2,2,0] no < [0,0,1]
70
Estado Global y Consistencia
• Modelo de sistemas
• N procesos Pi (i = 1, 2, ..., N)
• historia(Pi) = hi = < ei
0, ei
1, ei
2, ... >
• prefijo de historia hi
k = < ei
0, ei
1, ..., ei
k >
• si
k: estado del proceso Pi tras el evento ei
k
• si
0: estado inicial del proceso Pi
• Estado global del sistema: S = (s1, s2, ..., sN )
• Algunos estados globales pueden ser “inconsistentes”
• Corte: unión de prefijos de historia de los procesos
• C = h1
c1 ∪ h2
c2 ∪ ... ∪ hN
cN = (c1, c2, ..., cN)
71
Estado Global y Consistencia
• Frontera de un corte: unión de los últimos eventos
(c1, c2, ..., cn) ⇒ (e1
c1, e2
c2, ..., eN
cN)
• A cada corte le corresponde un estado global
(c1, c2, ..., cn) ⇒ (S1
c1, S2
c2, ..., SN
cN)
• Un corte C es consistente si para todo par de eventos (e, e’) se cumple lo
siguiente:
(e ∈ C) ∧ (e’ → e) ⇒ e’ ∈ C
• Si no, el corte C es inconsistente
• A cada corte consistente le corresponde un estado global consistente
72
Estado Global y Consistencia
• Corte consistente: si el evento de recepción de un mensaje está “dentro” del
corte, entonces el evento de envío de dicho mensaje también debe estar
73
Estado Global y Consistencia
• Para saber si un corte es consistente, nos podemos basar en los vectores de
tiempos:
∀i, j: Vi[i](ei
ci) ≥ Vj[i](ej
cj )
• Puesto que cada proceso posee una visión parcial del sistema, para
construir un corte consistente (y obtener de paso su estado global asociado)
los procesos deben ejecutar un algoritmo distribuido
• Ejemplo: algoritmo de Chandy y Lamport (1985)
• Utilidad: detección de interbloqueos, establecimiento de puntos de
recuperación de un sistema, finalización distribuida
74
Algoritmo snapshot de Chandy y Lamport
1. process p1 (the initiator of the snapshot) saves its state s1 and broadcasts
the message SNAPSHOT to P(the set of processes).
2. Let process pi receive the SNAPSHOT message the first time from some
process pj (pj can be different from p1 ). At that time, pi saves its state si
and forwards the SNAPSHOTmessage to P. The state of the channel cji is
set to empty, and pi starts logging the messages received on the channels
cki (for all k ≠j).
3. When pi receives SNAPSHOT from pk, then the computation of the state
of the channel cki is complete. As soon as pi has received SNAPSHOT
from all the processes in P, the computation of the snapshot is terminated
75
Algoritmo snapshot de Chandy y Lamport
76
Algoritmo snapshot de Chandy y Lamport
77
Algoritmo snapshot de Chandy y Lamport
78
Cŕeditos
• Transparencias basadas por:
• Alberto Lafuente, Mikel Larrea, Tiempo, causalidad y estado global
• García-Carballeira F., Tema 3 Comunicación y sincronización entre
procesos http://ocw.uc3m.es/ingenieria-informatica/sistemas-
distribuidos-2013/Tema3_ComunicacionYsincronizacion.pdf/view
• Universitat Politècnica de València - UPV, Sistemas Distribuidos –
Videos Youtube
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
79
Gracias

Tiempo, causalidad y estado global

  • 1.
  • 2.
    Sistemas Distribuidos Tiempo, causalidady estado global René Guamán-Quinche Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Enero, 2021 Loja, Ecuador
  • 3.
    3 1 Introducción 2 Tiempofísico 2.1 Sincronización externa 2.2 Sincronización interna 2.3 Compensación de desviaciones 2.4 Ejemplos 3 Tiempo lógico y orden de eventos 3.1 Modelo de eventos 3.2 Relojes lógicos de Lamport 3.3 Vectores de tiempos 4 Estado global y consistencia 4.1 Modelo del sistema 4.2 Determinación de estados globales consistentes 4.3 Algoritmo de Chandy y Lamport Contenido
  • 4.
    4 Introducción • En unsistema distribuido el estado global se encuentra distribuido entre los nodos • reloj estándar en cada nodo • comunicación entre nodos: retardos • cada nodo posee una visión subjetiva del estado global • Ejemplos: • en el instante t1 se manda un mensaje desde el nodo A al nodo B, que lo recibe en el instante t2, • con t2 < t1 • establecer con precisión absoluta el montante de los depósitos en todas las cuentas bancarias de todos los bancos del mundo en un instante de tiempo dado
  • 5.
    5 Introducción • Propuesta desolución: • un único reloj preciso + red dedicada para transmitir la señal sin retardos • no es práctico (coste), o es inviable (Internet) • Solución: tiempo distribuido • cada nodo posee su propio reloj (tiempo físico local) • los relojes son imprecisos: necesario ajustarlos periódicamente a un tiempo físico de referencia • Por otra parte, la gestión consistente del estado global requiere al menos ordenar los eventos producidos por los nodos (causalidad) • tiempo lógico
  • 6.
    6 Introducción - Sincronizaciónde relojes • Cuando cada máquina tiene su propio reloj, un evento que ocurrió después de otro evento puede, no obstante, asignarse una hora anterior.
  • 7.
    7 Tiempo Físico • Losrelojes de los computadores son de cuarzo • La frecuencia de oscilación varía con la temperatura • deriva: ~10 -6 (90ms en un día, 1s cada 11,6 días) • Relojes atómicos: gran precisión, muy caros • deriva: ~10 -13 (9ns en un día, 1s cada 300000 años) • precio: $50.000 - $100.000 !!! • Tipos de sincronización: • conocer el instante preciso en que se produce un evento en un nodo: sincronización externa • medir el intervalo entre dos eventos producidos en nodos diferentes (por ejemplo, envío y recepción de un mensaje), usando los relojes locales de cada nodo: sincronización interna • la interna no implica la externa, pero al revés sí
  • 8.
    8 Tiempo Físico Definiciones: • Segundosolar o astronómico: 1/86.400 del periodo de rotación de la Tierra (mean solar second) ⚫ pese a ser perfectamente válido para las situaciones de la vida cotidiana, la Tierra no gira a velocidad constante (va perdiendo lentamente velocidad), por lo que no sirve como referencia • Segundo atómico (IAT, 1967): 9.192.631.770 periodos de transición en un átomo de Cesio-133. Los relojes atómicos miden este tiempo ⚫ deriva de 3*10-8 con el segundo solar (~1 s al año) • Tiempo universal coordinado (UTC): medido en segundos atómicos, sincronizado con tiempo astronómico (diferencia > 900 ms ⇒ inserción de 1 s)
  • 9.
    9 Tiempo Físico Definiciones: • Tiempofísico de referencia: normalmente UTC • Resolución: periodo entre dos actualizaciones del registro del tiempo local ⚫ debe ser menor que el intervalo de tiempo mínimo entre dos eventos producidos consecutivamente en el nodo • Desviación (offset, skew, θ ): diferencia entre el tiempo local y el tiempo físico de referencia en un instante • Deriva (drift, δ ): desviación por unidad de tiempo (lo que adelanta o atrasa el reloj) • Precisión (accuracy): desviación máxima que se puede garantizar en el ajuste de un reloj
  • 10.
    10 Clock Synchronization Algorithms Larelación entre la hora del reloj y la hora UTC cuando los relojes marcan a diferentes velocidades
  • 11.
    11 Sincronización externa • Sincronización:procedimiento por el que se ajusta el valor de un reloj a un tiempo físico de referencia con una precisión preestablecida • Referencias de tiempo UTC se difunden periódicamente por radio • velocidad de propagación: ~3*108 m/s (1.000 km: ~3 ms) • velocidad variable: pérdida de precisión • Precisión de receptores comerciales: • Estaciones terrestres: 0,1 - 10 ms • Satélites geoestacionarios (35.786 km): 0,5 ms • Satélites GPS (20.200 km): 1 μs • Usos: servicio horario preciso, contabilidad...
  • 12.
    12 Sincronización interna • Paramuchas aplicaciones es más importante mantener bien sincronizados entre sí los relojes locales que conseguir una gran precisión en la sincronización externa • permite ordenar eventos (causalidad) • Propuesta de solución: receptor UTC en cada nodo • no es práctico (coste) • Solución: algoritmos de sincronización interna • centralizados: basados en un servidor específico • distribuidos: estadísticos
  • 13.
    13 Algoritmos centralizados • Principio: •utiliza un servidor de tiempos que proporciona referencias fiables (por ejemplo, un servidor que se sincroniza periódicamente con UTC) • el cliente envía una petición al servidor (m req ) • el servidor contesta enviando la referencia de tiempo en otro mensaje (m t ) • retardo de los mensajes: min + d • min es el tiempo mínimo de transmisión. Es constante y se puede determinar a partir de las características de la red • d es variable y depende de la carga del sistema y de la red • Ejemplo: algoritmo de Cristian (1989)
  • 14.
    14 Algoritmo de Cristian •t(m t ): tiempo devuelto por el servidor en el mensaje m t • D: tiempo desde que se envía m req y se recibe m t • min: tiempo mínimo de transmisión de un mensaje • Suposición: el servidor asigna la referencia t(m t ) en la mitad del intervalo • D-2*min (instante t en el cliente). Así se logra la mejor precisión • Desviación: θ = t - t(m t ) = t1 - D/2 - t(m t ) • Precisión = D/2 – min
  • 15.
    15 Algoritmo de Cristian-Ejemplo El cliente está retrasado 3 unidades de tiempo con el servidor cliente servidor 30 31 32 33 30 31 32 33
  • 16.
    16 Algoritmo de Cristian-Ejemplo El cliente pide el valor del reloj al servidor en T0 (según Cc) cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0
  • 17.
    17 Algoritmo de Cristian-Ejemplo cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs El cliente pide el valor del reloj al servidor en T0 (según Cc) El servidor contesta con el valor de su reloj Cs
  • 18.
    18 Algoritmo de Cristian-Ejemplo El cliente pide el valor del reloj al servidor en T0 (según Cc) El servidor contesta con el valor de su reloj Cs La respuesta llega al cliente en T1 (según CS) cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1
  • 19.
    19 Algoritmo de Cristian-Ejemplo El cliente pide el valor del reloj al servidor en T0 (según Cc) El servidor contesta con el valor de su reloj Cs La respuesta llega al cliente en T1 (según CS) C = Cs + (T1 – T0) / 2 cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1 C = 40 = 37 + (38 - 32) / 2
  • 20.
    20 Algoritmo de Cristian-Ejemplo El cliente pide el valor del reloj al servidor en T0 (según Cc) El servidor contesta con el valor de su reloj Cs La respuesta llega al cliente en T1 (según CS) C = Cs + (T1 – T0) / 2 Si C > Cc, Cc = C cliente servidor 30 31 32 33 34 35 36 37 38 41 42 43 44 45 46 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1 C = 40 = 37 + (38 - 32) / 2 40
  • 21.
    21 Algoritmo de Cristian- Ejemplo El cliente pide el valor del reloj al servidor en T0 (según Cc) El servidor contesta con el valor de su reloj Cs La respuesta llega al cliente en T1 (según CS) C = Cs + (T1 – T0) / 2 Si C > Cc, Cc = C Si C < Cc, se detiene Cc las siguientes Cc-C unidades de tiempo cliente servidor 36 37 38 39 40 41 42 43 44 44 44 44 45 46 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1 C = 40 = 37 + (44 - 38) / 2 Detener durante 44 – 40 = 4 unidades
  • 22.
    22 Algoritmo de Cristian- Análisis • Se asume que el tiempo de envío de ambos mensajes es prácticamente igual • En T1 el valor de Cs se habrá incrementado en (T1 – T0) / 2 cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1 C = Cs + (T1 – T0) / 2
  • 23.
    23 Algoritmo de Cristian- Análisis • Si uno de los dos mensajes tarda más en ser transmitido, el ajuste no es correcto • Generalmente la duración de ambos mensajes es igual cliente servidor 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 T0 Cs T1
  • 24.
    24 Algoritmo de Cristian- Análisis • En todo caso, la sincronización perfecta es imposible (con este algoritmo o con cualquier otro) • El correcto funcionamiento de una aplicación distribuida podrá depender de los valores de los relojes locales, solo si tolera el margen de error inherente al algoritmo de sincronización utilizado
  • 25.
    25 Ejemplo del algoritmode Cristian (3 peticiones) ¿Qué petición debería usar el cliente? Calcula la precisión y desviación obtenidas Precisión = 10 ms Desviación = 1406 ms Conociendo que el tiempo mínimo de transmisión es de 7 ms, ¿cambia en algo la respuesta anterior? Precisión = 3 ms ¿Qué se necesitaría para obtener una precisión de 2 ms? Siendo min = 7 ms, una petición con D ≤ 18 ms
  • 26.
    26 Ejemplo del algoritmode Cristian (3 peticiones)
  • 27.
    27 Ejemplo del algoritmode Cristian (3 peticiones)
  • 28.
    28 Algoritmos distribuidos ⚫ Principioestadístico de los algoritmos distribuidos: ⚫ las diferentes desviaciones de los tiempos locales tienden a cancelarse entre ellas en torno a un tiempo medio que se puede tomar como referencia fiables para la sincronización interna ⚫ Ejemplo: algoritmo de Berkeley (1989) ⚫ el coordinador solicita los tiempos a los demás nodos ⚫ el coordinador calcula un tiempo medio a partir de las medidas obtenidas, excluyendo las respuestas espurias y las que no llegan en plazo T = Σ(t(m i ) - D i /2) / N ⚫ el coordinador envía a cada nodo su desviación con respecto a la media, para que realice el ajuste θ i = t(m i ) - D i /2 - T ⚫ si el coordinador falla, se elige un nuevo coordinador
  • 29.
    29 Algoritmo de Berkeley a)Thetime daemon asks all the other machines for their clock values b)The machines answer c)The time daemon tells everyone how to adjust their clock
  • 30.
    30 Algoritmo de Berkeley ⚫Grupo de nodos formados por ⚫ Un servidor, denominado S ⚫ N clientes, denominados Ci ⚫ Cada nodo dispones de su propio reloj local ⚫ El objetivo es sincronizar los relojes de todos los nodos entre si ⚫ De forma periódica, a iniciativa del servidor, todos los nodos sincronizan sus relojes
  • 31.
    31 Algoritmo de Berkeley 10001 10005 10000 9998 s C2 C3 C1 Setiene un servidor s Se tiene un conjunto de clientes ci
  • 32.
    32 Algoritmo de Berkeley Elservidor difunde su reloj en T0 T0 10000 10001 10005 10000 9998 s C2 C3 C1 10000 10000 10000
  • 33.
    33 Algoritmo de Berkeley Losmensajes llegan a los clientes T0 10000 10006 10010 10005 10003 s C2 C3 C1 10000 10000 10000 Los mensaje llegan 5 unidades de tiempo Para simplificar, asumimos que llegan a la vez
  • 34.
    34 Algoritmo de Berkeley Cadacliente calcula la diferencia Di entre su reloj local y el que ha notificado en servidor de msj Di = T1 – T2 T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 10006 10010 10005 10003 s C2 C3 C1 10000 10000 10000
  • 35.
    35 Algoritmo de Berkeley Ycada cliente notifica dicha diferencia al servidor T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 D1 = 3 D2 = 6 D3 = 10 10006 10010 10005 10003 s C2 C3 C1
  • 36.
    36 Algoritmo de Berkeley Larespuesta de cada cliente llega en T1i T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1 = 3 D2 = 6 D3 = 10 100011 10015 10010 10008 s C2 C3 C1 Los mensaje llegan 5 unidades de tiempo Para simplificar, asumimos que llegan a la vez
  • 37.
    37 Algoritmo de Berkeley Seajusta la diferencia notificada Di’ = Di - (T1i – T0) / 2 T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 100011 10015 10010 10008 s C2 C3 C1
  • 38.
    38 Algoritmo de Berkeley Secalcula la diferencia media, incluyendo al servidor D = ΣDi / (N + 1) T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 D (-2 + 1 + 5 + 0) / 4 = 1 100011 10015 10010 10008 s C2 C3 C1
  • 39.
    39 Algoritmo de Berkeley Elservidor ajusta su reloj incrementándolo en D T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 D (-2 + 1 + 5 + 0) / 4 = 1 100011 10015 10001 +1 = 10011 10008 s C2 C3 C1
  • 40.
    40 Algoritmo de Berkeley Senotifica el ajuste Ai = D – Di a cada cliente T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 D (-2 + 1 + 5 + 0) / 4 = 1 A1 1 - (-2) = 3 A2 1 – 1 = 0 A3 1 – 5 = -4 100011 10015 10011 10008 s C2 C3 C1 A2 = 0 A3 = -4 A1 = 3
  • 41.
    41 Algoritmo de Berkeley Losmensajes llegan a cada cliente T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 D (-2 + 1 + 5 + 0) / 4 = 1 A1 1 - (-2) = 3 A2 1 – 1 = 0 A3 1 – 5 = -4 10016 10020 10016 10013 s C2 C3 C1 A2 = 0 A3 = -4 A1 = 3 Los mensaje llegan 5 unidades de tiempo Para simplificar, asumimos que llegan a la vez
  • 42.
    42 Algoritmo de Berkeley Cadacliente ajusta su reloj incrementándolo en Ai (si el ajuste el negativo, se programa una ajuste graudal) T0 10000 D1 10003 – 10000 = 3 D2 10006 – 10000 = 6 D3 10010 – 10000 = 10 T1i 10010 D1’ 3 – (10010 – 10000) / 2 = -2 D2’ 6 – (10010 – 10000) / 2 = 1 D3’ 10 – (10010 – 10000) / 2 = 5 D (-2 + 1 + 5 + 0) / 4 = 1 A1 1 - (-2) = 3 A2 1 – 1 = 0 A3 1 – 5 = -4 10016 + 0 = 10016 10020 + (-4) = 10016 10016 10013 + 3 = 10016 s C2 C3 C1 A2 = 0 A3 = -4 A1 = 3
  • 43.
    43 Algoritmo de Berkeley Consideraciones •No persigue sincronizar todos los relojes con el instante “real”, sino llegar a un acuerdo entre los nodos • Si alguna diferencia Di es muy distinta a las demás, no se tiene en cuenta • Si el servidor falla, se inicia un algoritmo de elección de lider para escoger otro servidor • La sincronización exacta es imposible debido a la variabilidad del tiempo en la transmisión de los relojes
  • 44.
    44 Algoritmo de Berkeley •Calcula el tiempo medio para la sincronización y la desviación a enviar a cada nodo Tiempo medio = 10:54:24.067 • Usando el método de Cristian, calcula la precisión en el ajuste de cada nodo al sincronizarse (min no se conoce) D/2
  • 45.
  • 46.
  • 47.
    47 Ejemplos Distribuited Time Server(DTS) • algoritmo distribuído • servidores (time servers): UTC • clientes (time clerks)
  • 48.
    48 Ejemplos Network Time Protocol(NTP) ⚫ estándar en Internet ⚫ proporciona sincronización redundante con UTC ⚫ Estructurado en capas (strata) de servidores de tiempo ⚫ servidores primarios (strata 1): referencias UTC fiables ⚫ servidores de nivel 2 (strata 2): sincronizados con primarios ⚫ Modos de operación: ⚫ red local con soporte adecuado: modo multicast ⚫ mayor precisión: modo de llamada a procedimiento ⚫ mejor sincronización interna: modo simétrico ⚫ La red de servidores se puede reconfigurar
  • 49.
    49 Ejemplos Network Time Protocol(NTP): modo asimétrico
  • 50.
  • 51.
    51 Tiempo lógico yorden de eventos ⚫ A veces la precisión obtenida al sincronizar los relojes no nos permite usar el tiempo físico para ordenar los eventos de los diferentes nodos de un sistema distribuido ⚫ siempre es posible ordenar los eventos de un mismo nodo (si se respeta la monotonicidad del reloj) ⚫ en cambio, relaciones de causalidad entre eventos de nodos diferentes pueden verse distorsionadas ⚫ Muchas aplicaciones requieren únicamente ordenar los eventos (y no tanto conocer el instante exacto en que ocurrieron)
  • 52.
    52 Modelo de eventos ⚫Modelo de sistema: conjunto de procesos que comunican únicamente mediante paso de mensajes enviar (pi , mensaje) recibir (pj , mensaje) pi y pj son el emisor y el receptor del mensaje ⚫ Simplificación: un proceso por nodo/máquina ⚫ Cada proceso genera una secuencia de eventos. Identificamos tres tipos de eventos: ⚫ Envío de un mensaje (al ejecutar enviar) ⚫ Recepción de un mensaje (al ejecutar recibir) ⚫ Eventos locales/internos (resto de eventos, sin comunicación)
  • 53.
    53 Modelo de eventos ⚫Para ordenar los eventos de un mismo proceso bastaría con asociar a cada evento x el tiempo local T(x) (si la resolución es suficiente) ⚫ Se dice que existe una relación de causalidad entre dos eventos del sistema (x → y, “x ha sucedido antes que y”, “x happened before y”) si: 1. x e y son eventos del mismo proceso y T(x) < T(y) 2. x e y son los eventos enviar(m) y recibir(m) del mismo mensaje m 3.Existe otro evento z tal que x → z y z → y (cierre transitivo de la relación)
  • 54.
    54 Modelo de eventos ⚫Si entre dos eventos no hay relación de causalidad, se dice que son concurrentes: x || y P1 P2 P3 b enviar(m1) c recibir(m1) d enviar(m2) f recibir(m2) m1 m2 a e a → b b → c a → c a → f a || e e || d
  • 55.
    55 Relojes lógicos deLamport ⚫ Propuesto en 1978, para indicar relaciones de causalidad. Cada proceso Pi tiene su reloj lógico local Ci , para asociar marcas de tiempo a sus eventos (un simple contador asíncrono basta) ⚫ Algoritmo: ⚫ Inicialmente, Ci = 0, ∀i ⚫ Antes de un evento local o envío de mensaje en pi : Ci = Ci + 1 ⚫ Cuando pj envía un mensaje m a pi , pj incluye el valor de su reloj lógico en el mensaje, Cm . Al recibir dicho mensaje, pi actualiza su reloj local de la siguiente manera: (1) Ci = max(Ci , Cm ), (2) Ci = Ci + 1 – Problema: Ci (x) < Cj (y) no implica x → y
  • 56.
    56 Relojes lógicos deLamport a e 0 0 P1 P2 P3 b enviar(m1) c recibir(m1) d enviar(m2) f recibir(m2) 0 1 2 3 4 1 5 a → b b → c a → c a → f a || e e || d
  • 57.
    57 Relojes lógicos deLamport - Ejemplo P1 P2 P3 a b c d e f g h Cada nodo dispone de un contador (reloj lógico) Cp inicializado 0 0 0 0
  • 58.
    58 Relojes lógicos deLamport - Ejemplo P1 P2 P3 a b c d e f g h Cada ejecución de un evento (envió de mensaje) en un nodo p, Incrementa el valor de su contador Cp en 1 0 0 0 1 2 1
  • 59.
    59 Relojes lógicos deLamport - Ejemplo P1 P2 P3 a b c d e f g h Cada un nodo p recibe un mensaje, actualiza su reloj acorde a Cp = max (Cp, Cm) + 1 0 0 0 1 2 1 2 1 1 3 3
  • 60.
    60 Relojes lógicos deLamport - Ejemplo P1 P2 P3 a b c d e f g h Aplicando las reglas del algoritmo y al final queda 0 0 0 1 2 1 2 1 1 3 3 4 4 5 6
  • 61.
    61 Relojes lógicos deLamport - Ejemplo P1 P2 P3 a b c d e f g h Se establecen un orden parcial. Puede convertirse en total añadiendo el identificador del nodo como sufijo 1.1 2.1 1.3 3.2 3.1 4.2 5.3 6.3 a 1.1 f 1.3 b 2.1 c 3.1 d 3.2 e 4.2 g 5.3 H 6.3
  • 62.
    62 Vectores de tiempo Definición: V1< V2 ⇔∀i V1[i] =V2[i] and∃j V1[j] <V2[j] • Existirá relación de causalidad entre dos eventos (x, y) si y sólo si V(x) < V(y) o V(y) < V(x) • Si no, los eventos son concurrentes • Los vectores de tiempos permiten determinar relaciones de causalidad con total precisión: Vi(x) < Vj(y)⇔x →y
  • 63.
    63 Vectores de tiempo P1 P2 P3 benviar(m1) c recibir(m1) d enviar(m2) f recibir(m2) [0,0,0] [0,0,0] [0,0,0] a e [1,0,0] [2,0,0] [0,0,1] [2,1,0] [2,2,0] [2,2,2] a → b b → c a → c a → f a || e e || d
  • 64.
    64 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Cada nodo p dispone de un reloj vectorial Vp inicializado con todos sus elementos 0
  • 65.
    65 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] [1,0,0] [2,0,0] [0,0,1] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Un nodo p incrementa en 1 Vp[P] cada vez que envía el mensaje
  • 66.
    66 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] [1,0,0] [2,0,0] [0,0,1] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Un mensaje m enviado por un nodo p lleva asociado su reloj vectorial. Es decir, Vm = Vp [2,0,0] [0,0,1] [1,0,0]
  • 67.
    67 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] [1,0,0] [2,0,0] [0,0,1] [2,1,0] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N, Vp[1] = max (Vp[i], Vm[i]) [2,0,0] [0,0,1] [1,0,0] [3,0,0] [3,0,1] [0,0,1]
  • 68.
    68 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] [1,0,0] [2,0,0] [0,0,1] [2,1,0] [2,2,0] [2,2,2] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N, Vp[1] = max (Vp[i], Vm[i]) [2,0,0] [0,0,1] [1,0,0] [3,0,0] [3,0,1] [0,0,1] [2,2,0] [2,2,3]
  • 69.
    69 Vectores de tiempo- Ejemplo [0,0,0] [0,0,0] [0,0,0] [1,0,0] [2,0,0] [0,0,1] [2,1,0] [2,2,0] [2,2,2] a → b b → c a → c a → f a || e e || d P1 P2 P3 a b c d e f g h Al recibir p un mensaje, incrementa en 1 Vp[P] y además ∀i, 1<i<N, Vp[1] = max (Vp[i], Vm[i]) [2,0,0] [0,0,1] [1,0,0] [3,0,1] [2,2,0] [2,2,3] [1,0,0] < [2,2,0] a → e [0,0,1] no < [2,2,0] f || e [2,2,0] no < [0,0,1]
  • 70.
    70 Estado Global yConsistencia • Modelo de sistemas • N procesos Pi (i = 1, 2, ..., N) • historia(Pi) = hi = < ei 0, ei 1, ei 2, ... > • prefijo de historia hi k = < ei 0, ei 1, ..., ei k > • si k: estado del proceso Pi tras el evento ei k • si 0: estado inicial del proceso Pi • Estado global del sistema: S = (s1, s2, ..., sN ) • Algunos estados globales pueden ser “inconsistentes” • Corte: unión de prefijos de historia de los procesos • C = h1 c1 ∪ h2 c2 ∪ ... ∪ hN cN = (c1, c2, ..., cN)
  • 71.
    71 Estado Global yConsistencia • Frontera de un corte: unión de los últimos eventos (c1, c2, ..., cn) ⇒ (e1 c1, e2 c2, ..., eN cN) • A cada corte le corresponde un estado global (c1, c2, ..., cn) ⇒ (S1 c1, S2 c2, ..., SN cN) • Un corte C es consistente si para todo par de eventos (e, e’) se cumple lo siguiente: (e ∈ C) ∧ (e’ → e) ⇒ e’ ∈ C • Si no, el corte C es inconsistente • A cada corte consistente le corresponde un estado global consistente
  • 72.
    72 Estado Global yConsistencia • Corte consistente: si el evento de recepción de un mensaje está “dentro” del corte, entonces el evento de envío de dicho mensaje también debe estar
  • 73.
    73 Estado Global yConsistencia • Para saber si un corte es consistente, nos podemos basar en los vectores de tiempos: ∀i, j: Vi[i](ei ci) ≥ Vj[i](ej cj ) • Puesto que cada proceso posee una visión parcial del sistema, para construir un corte consistente (y obtener de paso su estado global asociado) los procesos deben ejecutar un algoritmo distribuido • Ejemplo: algoritmo de Chandy y Lamport (1985) • Utilidad: detección de interbloqueos, establecimiento de puntos de recuperación de un sistema, finalización distribuida
  • 74.
    74 Algoritmo snapshot deChandy y Lamport 1. process p1 (the initiator of the snapshot) saves its state s1 and broadcasts the message SNAPSHOT to P(the set of processes). 2. Let process pi receive the SNAPSHOT message the first time from some process pj (pj can be different from p1 ). At that time, pi saves its state si and forwards the SNAPSHOTmessage to P. The state of the channel cji is set to empty, and pi starts logging the messages received on the channels cki (for all k ≠j). 3. When pi receives SNAPSHOT from pk, then the computation of the state of the channel cki is complete. As soon as pi has received SNAPSHOT from all the processes in P, the computation of the snapshot is terminated
  • 75.
    75 Algoritmo snapshot deChandy y Lamport
  • 76.
    76 Algoritmo snapshot deChandy y Lamport
  • 77.
    77 Algoritmo snapshot deChandy y Lamport
  • 78.
    78 Cŕeditos • Transparencias basadaspor: • Alberto Lafuente, Mikel Larrea, Tiempo, causalidad y estado global • García-Carballeira F., Tema 3 Comunicación y sincronización entre procesos http://ocw.uc3m.es/ingenieria-informatica/sistemas- distribuidos-2013/Tema3_ComunicacionYsincronizacion.pdf/view • Universitat Politècnica de València - UPV, Sistemas Distribuidos – Videos Youtube
  • 79.
    Networking académico: Correo electrónico:rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 79 Gracias