Relojes, orden y causalidad
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
- Si A pudo causar B, decimos que A ocurrió «antes» con sentido físico.
- Los relojes vectoriales registran qué nodo vio qué, capturando causalidad y detectando concurrencia.
- Dos eventos no relacionados son concurrentes: ninguno influyó en el otro.

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
- Fiarse del reloj de cuarzo para empates finos y aceptar órdenes imposibles entre nodos.
- Usar solo Lamport y creer que captura causalidad, cuando ordena al azar lo concurrente.
- Confundir concurrencia con conflicto: dos cambios sin relación causal no siempre contradicen.
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:
- Registrar en cada evento su reloj vectorial, con el contador propio y los de los nodos conocidos.
- Comparar los vectores de las dos ediciones para ver si uno precede causalmente al otro.
- Si ningún vector domina, declarar los eventos concurrentes en vez de inventar un orden.
- Aplicar la regla acordada para concurrentes, que puede ser fusionar o pedir elección.
- 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
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?