Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

Vector Clocks

Un vector clock es un mecanismo para rastrear causalidad entre eventos en un sistema distribuido, permitiendo detectar cuándo dos actualizaciones son concurrentes y necesitan resolución.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • Vector Clocks as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

En un sistema distribuido, el tiempo físico no alcanza para ordenar eventos: los relojes de las máquinas no están perfectamente sincronizados. Un vector clock asigna a cada evento un vector de contadores —uno por nodo— que permite determinar si un evento ocurrió antes, después o concurrentemente con otro.

Si el vector de A domina al de B, A pasó después. Si ninguno domina al otro, son concurrentes —un conflicto que la aplicación debe resolver—. Dynamo y Riak usan vector clocks para detectar conflictos entre réplicas que recibieron escrituras mientras estaban desconectadas.

Alcance y supuestos

Cubre vector clocks, su diferencia con Lamport clocks y su uso en resolución de conflictos. Asume familiaridad con sistemas distribuidos.

Modelo mental

Un grupo de editores trabajando en un mismo documento de Google Docs sin conexión. Cuando se reconectan, el sistema necesita saber: ¿el cambio de Ana ocurrió antes que el de Bruno, o editaron en paralelo? El vector clock da la respuesta.

Uso práctico

  • ✅ Detección de conflictos, bases de datos multi-primary, CRDTs.
  • ❌ Sistemas donde el orden total basta —Lamport clocks son más simples—.

Ejemplo trabajado: conflicto en DynamoDB

Dos réplicas reciben escrituras concurrentes mientras están particionadas: réplica 1 pone color: blue, réplica 2 pone color: red. Cuando se reconcilian, los vector clocks muestran que son concurrentes. DynamoDB aplica last-write-wins con timestamp, pero con vector clocks la aplicación podría detectar el conflicto y mergear.

Evidencia

  • Amazon Dynamo popularizó los vector clocks. Riak los usa como mecanismo central de consistencia eventual.

Fuentes citadas