A vector clock is an algorithm for generating a partial ordering of events in a distributed system and detecting causality violations. Just as in Lamport timestamps, interprocess messages contain the state of the sending process's logical clock. A vector clock of a system of N processes is an array/vector of N logical clocks, one clock per process; a local "smallest possible values" copy of the global clock-array is kept in each process, with the following rules for clock updates:
The vector clocks algorithm was independently developed by Colin Fidge and Friedemann Mattern in 1988.
Vector clocks allow for the partial causal ordering of events. Defining the following:
Properties:
Relation with other orders: