3. Consistencia
Un sistema distribuido es generalmente
considerado consistente si después de una
operación de actualización de algún escritor todos
los lectores ven esa actualización de alguna fuente
de datos compartida.
Consistencia secuencial: Las actualizaciones de un
cliente se aplican en el orden en que fueron
enviadas
4. Modelo de un sistema
distribuido
Modelo de sistema:
◦ Compuesto por nodos.
◦ Procesos secuenciales {P1, P2, ...Pn} que ejecutan un algoritmo local
(en cada nodo)
◦ Canales de comunicación
Eventos en Pi
◦ Ei = {ei1, ei2, ...ein}
Tipos de eventos locales
◦ Internos (cambios en el estado de un proceso)
◦ Comunicación (envío, recepción)
5. Modelo de un sistema
distribuido
Un sistema distribuido se puede modelar como un
sistema de transición de estados STE (C, → , I)
1. C es un conjunto de estados
2. → describe las posibles transiciones(→ ⊆ C × C)
3. I describe los estados iniciales(I ⊆ C)
El estado de un sistema distribuido, C, se puede
describir como
◦ La configuración actual de cada proceso/procesador
◦ Los mensajes en tránsito por la red
6. Modelo de un sistema
distribuido
En un sistema distribuido el estado global se encuentra
distribuido entre los nodos
◦ Cada nodo posee una visión subjetiva del estado global
◦ Dos eventos pueden ser vistos en distintos orden por distintos
observadores
7. Modelo de un sistema
distribuido
Algoritmo local:
◦ Un proceso cambia de un estado a otro (evento interno)
◦ Un proceso cambia de un estado a otro y envía un mensaje a otro
proceso (evento de envío)
◦ Un proceso recibe un mensaje y cambia su estado (evento de
recepción)
Restricciones
◦ Un proceso p solo puede recibir un mensaje después de haber sido
enviado por otro
◦ Un proceso p solo puede cambiar del estado c al estado d si está
actualmente en el estado c
8. Modelo de un sistema
distribuido
Algoritmos Distribuidos: Los algoritmos distribuidos
deben tener las siguientes propiedades:
◦ La información relevante se distribuye entre varias máquinas
◦ Los procesos toman las decisiones sólo en base a la
información local
◦ Debe evitarse un punto único de fallo
◦ No existe un reloj común
9. Estados globales y tiempo
Consideramos un sistema distribuido como una
coleccion P de N procesos pi , con i = 1; 2; : : : ;N.
◦ Cada proceso pi ejecuta en un procesador independiente
◦ Como no hay memoria compartida solo se comunican por
paso de mensajes: send y recv
◦ Cada proceso pi tiene un estado si que cambia durante la
ejecución.
Evento
• Ocurrencia de una acción individual send, recv u otra acción que
cambie el estado del pi
10. Historia
Los eventos dentro de pi poseen un orden total,
definido por la relacion → i
Ahora es posible definir la historia del proceso pi
Relación ocurre antes
• e1 →i e2 ↔ e1 ocurre antes que e2 en pi .
Historia de pi
Serie de eventos que ocurren en pi denidos por la relacion →i
history (pi ) = hi = <e i
0 , e i
1 , ei
2 , ….>
12. Relojes Físicos
Definiciones:
• normalmente UTC =Time Coordinated Universal Time
Tiempo físico de
referencia:
• 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
Resolución:
• diferencia entre el tiempo local y el tiempo físico de
referencia en un instante
Desviación
(offset, skew, q):
• desviación por unidad de tiempo (lo que adelanta o atrasa el
reloj)Deriva (drift, d):
• Desviación máxima que se puede garantizar en el ajuste de
un reloj
Precisión
(accuracy):
13. Relojes Físicos
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 (UTC)
Externa: Se busca una fuente externa de referencia
fiable
Interna:
◦ Centralizada: Utiliza un servidor de tiempos que proporciona
una referencia fiable (Algoritmo de Christian – 1989)
◦ Distribuida: El coordinador solicita los tiempos a los demás
nodos para calcular un tiempo medio (Algoritmo de Berkeley -
1989)
14. Relojes Físicos
Algoritmo de Christian (1989)
◦ el cliente envía una petición al servidor (mreq)
◦ el servidor contesta enviando la referencia de tiempo en otro
mensaje (mt)
◦ 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
15. ◦ t(mt): tiempo devuelto por el servidor en el mensaje mt
◦ D: tiempo desde que se envía mreq y se recibe mt
◦ min: tiempo mínimo de transmisión de un mensaje
◦ Suposición: el servidor asigna la referencia t(mt) en la mitad
del intervalo
◦ D-2*min (instante t en el cliente). Así se logra la mejor
precisión
◦ Desviación: q = t - t(mt) = t1 - D/2 - t(mt)
◦ Precisión = D/2 – min
16. Relojes Físicos
Algoritmo de Berkeley (1989)
◦ Motivación: 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.
◦ El coordinador solicita los tiempos a los demás nodos y calcula un
tiempo medio a partir de las medidas obtenidas, excluyendo las
respuestas espurias y las que no llegan en plazo
◦ T = Σ(t(mi) - Di/2) / N
◦ El coordinador envía a cada nodo su desviación con respecto a la
media, para que realice el ajuste
◦ θi = t(mi) - Di/2 - T
◦ Si el coordinador falla, se elige un nuevo coordinador
17. Algoritmo de Berkeley
a) El demonio de tiempo solicita el valor de reloj de todas las demás
máquinas (nodos)
b) Las máquinas responden
c) El demonio de tiempo le dice a los demás como ajustar su reloj
18. http://www.json.org/xml.html
Relaciones causales
Precisión de relojes físicos tiene un límite
◦ Sincronización perfecta es imposible en un sistema distribuido
◦ Pero dentro de un mismo proceso si hay un orden absoluto
◦ Muchas aplicaciones requieren únicamente ordenar los
eventos (y no tanto conocer el instante exacto en que
ocurrieron)
◦ Se puede establecer causalidad para establecer ordenes entre
distintos procesos
19. Relaciones causales
Para ordenar los eventos de un mismo proceso
bastaría con asociar a cada evento x el tiempo local o
una marca de tiempo T(x).
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:
HB1: x e y son eventos del mismo proceso y T(x)<T(y)
HB2: x e y son los eventos enviar(m) y recibir(m) del mismo mensaje m
HB3: Existe otro evento z tal que x → z y z → y (cierre transitivo de la
relación)
20. Relación ocurre-antes (happens-before)
Lamport, 1978
Si entre dos eventos no hay relación de causalidad, se
dice que son concurrentes: x || y
Establecer la relación de causalidad entre los eventos a, b, c, d, e y f
21. Relacion ocurre-antes (happens-before)
Lamport, 1978
No ofrece una relación
de orden total
HB1: a → b, c → d, e →f
HB2: b → c, d → f ,
HB3: a →c, c →f
pero a → e y e → a, a y e son concurrentes
e||a,b,c,d
22. Reloj Lógico – Timestamp
Lamport, 1978
Un reloj lógico es un contador
monótono creciente
◦ Cada proceso pi mantiene su
propio reloj logico Li
◦ Sin relación con el reloj físico
◦ Usado para establacer Lamport
Timestamps
◦ Li (e), timestamp del evento e
en pi
◦ L(e), timestamp del evento e
en el proceso en que ocurrió
Algoritmo:
◦ Inicialmente, Li = 0, ∀i
◦ Antes de un evento local o envío de
mensaje en pi: Li = Li + 1
◦ Cuando pi envía un mensaje m a pj,
pi incluye el valor de su reloj lógico
en el mensaje, Lm.
◦ Al recibir dicho mensaje, pi actualiza
su reloj local de la siguiente manera:
◦ (1) Li = max(Li, Lm),
◦ (2) Li = Li + 1
Problema: Li(x) < Lj(y) no implica x → y
24. Reloj Lógico – Timestamp
Lamport, 1978
Algunos eventos tienen el mismo timestamp
◦ Es normal si son concurrentes
◦ ¿Y si son desean entrar a una sección crítica?
Solucion arbitraria (pero efectiva)
◦ Reemplazar el timestamp Li de e en pi por (Lii ; i )
◦ Para dos timestamps (Li; i) y (Ljj ; j ), se dene:
◦ (Li; i) < (Lj; j) ⇔ Li< Lj ⋁ (Ti= Tj ⋀ i < j)
Se establece un orden total
25. Relojes Vectoriales
Mattern (1989), Fidge (1991)
Un Reloj Vectorial para N procesos, es un vector N-
dimensional
◦ Cada proceso mantiene su reloj vectorial Vi , y marca sus
eventos
◦ Al hacer send(m), se agrega Vi
◦ Vi(x) < Vj(y) ⇔x → y
26. Relojes Vectoriales
Mattern (1989), Fidge (1991)
Inicialmente, Vi[j] = 0, "i, j
1. Vi se actualiza antes de cada evento en pi : Vi [i ] := Vi [i ] + 1
2. Cuando pi hace send(m), agrega el valor t = Vi
3. Cuando pi recibe el par (m; t), actualiza:
4. Vi [j ] := max(Vi [j ]; t[j ]), para j = 1; 2; : : : ;N y aplica 2 antes de aplicar un
timestamp a recv (m)
a || b . . . cuando V(a) ≮ V(b) y V(a) ≱ V(b)
27. Relojes Vectoriales
Mattern (1989), Fidge (1991)
Debilidades y Variantes:
◦ Almacenamiento y envo O(N)
◦ Charron-Bost (1991) demuestra que para determinar la
relación ocurre-antes usando timestamps, es necesario utilizar
las N dimensiones
◦ Raynal & Singhal (1996) indicando maneras de enviar menos
informacion, a cambio de un overhead dentro de cada
proceso para reconstruir los vectores.
◦ Relojes Matriciales: mantienen estimaciones de relojes
vectoriales de los N procesos.
28. Relojes Vectoriales
Mattern (1989), Fidge (1991)
Debilidades y Variantes:
◦ Almacenamiento y envo O(N)
◦ Charron-Bost (1991) demuestra que para determinar la
relación ocurre-antes usando timestamps, es necesario utilizar
las N dimensiones
◦ Raynal & Singhal (1996) indicando maneras de enviar menos
informacion, a cambio de un overhead dentro de cada
proceso para reconstruir los vectores.
◦ Relojes Matriciales: mantienen estimaciones de relojes
vectoriales de los N procesos.
29. Estados globales
Investigar para la próxima clase
- ¿Qué es un estado global?
- Utilidad
- Algoritmo de Instantáneas de Chandy y Lamport
30. Control de concurrencia
Exclusión mutua distribuida
Bloqueos
Control optimista de concurrencia
Ordenación por marcas de tiempo (MVCC)
31. Exclusión Mutua Distribuida
Coordinación de procesos para compartir recursos.
Los procesos ejecutan el siguiente fragmento de código
◦ entrada()
◦ SECCIÓN CRÍTICA
◦ salida()
Solución centralizada
◦ Un proceso funciona como coordinador de bloqueos (lock
master), y concede bloqueos de acceso a secciones críticas.
◦ Factible hasta cierta cantidad de procesos.
32. Exclusión Mutua Distribuida
Solución distribuida
◦ No siempre es posible designar un lock master
◦ Ejemplo: Redes ethernet o wifi 'ad-hoc': solo un nodo debe
transmitir a través del medio
◦ Tres algoritmos
◦ Ring-based
◦ Ricart-Agrawala (1981)
◦ Maekawa (1985).
33. Siguiente clase
Algoritmos de exclusión mutua
Control de concurrencia
Algoritmos de elección y consenso
Técnicas de particionamiento