Sistemas Distribuidos · Ingeniería de Datos

Relojes, orden y causalidad

Explicar por qué el orden global de eventos es difícil en sistemas distribuidos y cómo la causalidad y los relojes lógicos sustituyen a un tiempo común fiable.

Relojes, orden y causalidad

El tiempo físico miente No puedes fiarte del reloj de dos máquinas para decidir qué pasó primero: el cristal de cuarzo diverge y el retardo de red engaña. El orden fiable no nace del tiempo, sino de saber qué evento pudo influir en cuál.

El problema del orden

En un solo nodo, el orden es el del reloj. Entre nodos sin reloj común, dos eventos pueden parecer simultáneos u ordenarse mal, y eso rompe invariantes como «si retiro antes de comprar, la compra falla».

Relojes físicos y su deriva

Los relojes de máquina corren a ritmos ligeramente distintos y se desfasan. Protocolos como NTP los acercan, pero nunca lo bastante para resolver empates finos: la deriva y el retardo dejan margen de error.

Relojes de Lamport

Un reloj lógico asigna a cada evento un número que crece localmente y se sincroniza al mensaje. Da un orden total coherente, pero no captura causalidad fina: dos eventos sin relación pueden ordenarse al azar.

Causalidad frente a tiempo

Tres relojes en nodos separados marcan horas ligeramente distintas unidos por líneas onduladas; debajo, dos puntos de evento enlazados por una flecha sólida y un tercer punto queda suelto, sin conexión.
El reloj físico diverge entre nodos; el orden fiable llega de la causalidad, no del cuarzo.

Relojes vectoriales

Cada nodo lleva un vector con su contador y los que conoce de otros. Comparando vectores se decide si un evento precede causalmente a otro o son concurrentes, sin depender del reloj físico.

Por qué importa

Replicar, resolver conflictos y garantizar consistencia dependen de saber el orden real. Sin un modelo de orden, dos réplicas pueden aplicar cambios en distinto orden y divergir para siempre.

Tiempo físico con cota

Para casos que exigen tiempo físico, se usan marcas de tiempo con cota de error o relojes atómicos; pero el trabajo fino del orden suele recaer en estructuras lógicas que no dependen del cuarzo.

Errores frecuentes

Ejemplo resuelto: dos ediciones simultáneas de un documento

Dos usuarios editan el mismo archivo sin verse y el sistema debe decidir qué pasó antes. El análisis:

  1. Registrar en cada evento su reloj vectorial, con el contador propio y los de los nodos conocidos.
  2. Comparar los vectores de las dos ediciones para ver si uno precede causalmente al otro.
  3. Si ningún vector domina, declarar los eventos concurrentes en vez de inventar un orden.
  4. Aplicar la regla acordada para concurrentes, que puede ser fusionar o pedir elección.
  5. Nunca justificar la decisión por la hora del servidor, que puede estar desfasada.

¿Para qué sirve en la realidad?

Colaboración en tiempo real, carritos de compra y cualquier réplica multiusuario dependen de saber qué cambió antes. Sin modelo de orden, dos réplicas aplican lo mismo en distinto orden y divergen para siempre.

Dos eventos en nodos distintos, sin que ninguno haya recibido información del otro, se consideran:

Un reloj físico perfectamente sincronizado elimina todo problema de orden en sistemas distribuidos.

Orden

Reloj lógico que da orden total coherente
lamport
Estructura que captura causalidad y detecta concurrencia
vectorial
Dos eventos sin relación causal son...
concurrentes
Reloj que sincroniza contadores al enviar mensajes es...
logico
La divergencia del cuarzo entre nodos se llama...
deriva

Ordena el razonamiento para establecer el orden entre dos eventos remotos:

Observar
Comparar
Deducir
Resolver

Relojes de Lamport
Cómo los relojes lógicos ordenan eventos sin depender del tiempo físico.

Une cada instrumento con lo que permite.

El tiempo físico miente

# Orden distribuido
## Problema
### sin reloj común
### la deriva engaña
## Lamport
### orden total
### no ve causalidad fina
## Vectorial
### registra quién vio qué
### detecta concurrencia
## Uso
### replicar y resolver
### evitar divergencia

Relojes vectoriales
Definición y propiedades de los relojes que capturan la relación «ha pasado antes que».

Dos usuarios editan el mismo documento sin verse. ¿Son los cambios concurrentes o ordenables? Sin reloj físico fiable, ¿qué necesitas para decidir qué edición gana?