← Lumbre

Sistemas Distribuidos · 6.º Relojes, orden y causalidad

Portada de Relojes, orden y causalidad

Relojes, orden y causalidad

✦ En una máquina hay un reloj; en un sistema distribuido hay miles que se desfasan · Sistemas Distribuidos · Ingeniería de Datos · en menos de 9 minutos

Roadwise Consulting

Firmado y verificado · Biblioteca UNIV

Objetivo: 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.

9 min Sistemas Distribuidos · Ingeniería de Datos 18–30 años
Más
Relojes, orden y causalidad

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Sistemas Distribuidos · 6.º semestre Cursos Explorar Mi cuenta Salir del modo estudio

Relojes, orden y causalidad

Relojes lógicos en sistemas distribuidos
Vídeo en español que explica cómo ordenar eventos sin fiarse del reloj físico.

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.
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

  • 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:

  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

Toca una tarjeta para ver la respuesta.

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

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

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

                      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?

                      Tu texto se guarda sólo en este dispositivo.

                      Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.
                      Más sobre esta lección
                      Explora temas relacionados

                      Conceptos

                      Comentarios

                      Inicia sesión para comentar.

                      Todavía no hay comentarios. Sé la primera persona en opinar.