Vector Clocks concept page: per-replica vector counter that exactly distinguishes causal vs concurrent events. 3-replica Dynamo-style cluster + 2 clients. 4 scenarios: causal chain detection, concurrent writes returning siblings, VC vs Lamport comparison showing concurrency info loss, sibling explosion anti-pattern.
A vector clock stores one logical counter per participant. A local event increments the local component; a send carries the vector; a receive takes componentwise maximum and then increments the receiver component. Componentwise dominance captures happens-before for the represented participant set, while incomparable vectors identify concurrent histories.
The vector is causal context, not the application value. Taking componentwise maximum merges knowledge but cannot decide how concurrent carts, balances, or document edits should combine. Payload resolution and invariant preservation remain application decisions.
V <= W iff every component of V is at most W; strict dominance represents causal ancestry.local-tick): Only the executing replica component advances for a local event.send-receive): The receiver takes max and then increments itself.component-compare): All components participate in ancestry comparison.concurrent-writes): Disconnected replicas advance different components and become incomparable.sibling-resolution): Causal context merges separately from application payload semantics.duplicate-delivery): Idempotent vector merge does not make the business effect idempotent.membership-pruning): Deleting a component while old history can return loses causal distinctions.restart-incarnation): A low restored counter needs recovery or a fresh incarnation.Введите числа или выберите пресет