Member-only story
There Is No Now
Why distributed systems stopped asking “when” and started asking “before or after”
Ask two machines what time it is and you get two answers. Not wildly different answers, usually: a few milliseconds apart if they both talk to an NTP server, a few hundred if one of them is a laptop that just woke up, a few seconds if somebody’s virtual machine was paused for a live migration and nobody told the guest. The gap is never zero, and worse, it is never constant. Quartz oscillators drift with temperature, and a machine in a hot rack runs its clock at a different speed than the one by the air conditioner. Every synchronization protocol is a periodic correction of an error that immediately starts growing again.
That would be a curiosity if programs did not keep using timestamps to decide who wins. Two writes to the same key arrive at two replicas. Each replica stamps its write with the local time. Later, when the replicas reconcile, the one with the larger timestamp is declared the winner, and the other is silently discarded. If the two clocks disagree by more than the interval between the writes, the database has just chosen the loser with a straight face. This is not a hypothetical failure mode; it is the documented behavior of every last-write-wins store, and the fix is not better clocks. The fix is to stop asking the question.







