Skip to main content
Time and ordering are fundamental challenges in distributed systems. Without a global clock, determining the order of events requires careful reasoning about causality and logical time.

The Challenge of Time in Distributed Systems

In a distributed system, there is no single global clock that all processes can access. Physical clocks on different machines may drift, and network delays make it impossible to determine the exact order of events occurring on different nodes. This fundamental challenge shapes how we reason about distributed computations.
As the paper “There is No Now” explains, simultaneity is a problematic concept in distributed systems. Events that appear simultaneous may actually have a causal relationship that we need to respect.

Lamport’s Foundational Work

Time, Clocks and Ordering of Events

Times, Clocks and Ordering of Events in Distributed Systems This is Leslie Lamport’s quintessential distributed systems primer. The paper establishes the foundations for reasoning about time and causality in systems without synchronized clocks.

Time, Clocks and Ordering of Events

The foundational paper on logical time and event ordering in distributed systems
Lamport’s paper introduced several fundamental concepts:Happens-Before Relation (→) Defines a partial ordering on events:
  • If events a and b occur in the same process and a occurs before b, then a → b
  • If a is the sending of a message and b is the receipt of that message, then a → b
  • If a → b and b → c, then a → c (transitivity)
Logical Clocks A way to assign timestamps to events that respects the happens-before relation:
  • Each process maintains a counter
  • Counter increments between events
  • Messages carry timestamp of sender
  • Receiver sets its clock to max(local_clock, message_clock) + 1
Concurrent Events Two events are concurrent if neither happens-before the other. This formalization helps us reason about which events might affect each other.

Why This Paper Matters

Nearly all of Lamport’s work is influential in distributed systems, but this paper is particularly essential because:
  • It establishes vocabulary used throughout distributed systems literature
  • It provides tools for reasoning about causality without physical clocks
  • It’s the foundation for understanding consensus, consistency, and replication
  • Concepts like “happens-before” appear in virtually every distributed systems paper

Session Guarantees and Consistency Models

Session Guarantees for Weakly Consistent Replicated Data This 1994 paper established standard vocabulary for reasoning about consistency in eventually consistent systems. Understanding these guarantees is essential for working with modern distributed databases and storage systems.

Monotonic Reads

Once you’ve read a value, you’ll never see an older value in subsequent reads

Read Your Writes

After writing a value, you’ll always see that write (or a newer one) in subsequent reads

Writes Follow Reads

If you read a value and then write, your write is ordered after the read value

Monotonic Writes

Your writes are applied in the order you made them

Consistency Models Explained

What it means: If a process reads a data item x with value v, any successive read of x by that process will return v or a more recent value.Why it matters: Prevents users from seeing the system “go backward in time” - once you’ve seen an update, you won’t see older versions.Example: After reading your updated profile photo, you won’t suddenly see your old photo on the next page load.
What it means: If a process writes a value to a data item x, any successive read of x by that process will return that written value or a more recent value.Why it matters: Users expect to see their own updates immediately, even if eventual consistency means other users might see them later.Example: After posting a comment, you immediately see it in the comment list (even if other users might not see it for a few seconds).
What it means: If a process reads a value v from x and subsequently writes to x, the write is guaranteed to take place on a version of x that includes v or a more recent value.Why it matters: Ensures that writes respect causality - if you write based on something you read, your write won’t be applied to an older version.Example: If you reply to a comment you just read, your reply won’t be attached to an older version of the comment thread.
What it means: If a process writes to a data item x and then writes again to x, the second write must be applied after the first write completes.Why it matters: Ensures that writes from a single client are applied in order, preventing out-of-order updates.Example: If you update your status twice in quick succession, the updates appear in the order you made them.

Ordering and Simultaneity

There is No Now This article explores the problems with simultaneity in distributed systems. The concept of “now” - events happening at the same time - is fundamentally problematic when different observers have different perspectives due to network delays and lack of synchronized clocks.
Key insights from “There is No Now”:
  • Different nodes cannot agree on exactly when “now” is
  • What appears simultaneous to one observer may not be to another
  • Causality (happens-before) is more fundamental than physical time
  • Designing systems that rely on simultaneity leads to subtle bugs

Practical Implications

Understanding time and ordering is crucial for:

Distributed Databases

Databases must decide:
  • How to order transactions from different clients
  • Which version of data is “newer”
  • How to detect and resolve conflicts
  • What consistency guarantees to provide

Consistency Models

Different consistency models make different trade-offs:
  • Strong consistency: All nodes agree on order, but requires coordination (slower)
  • Eventual consistency: Fast local updates, but must handle conflicts
  • Causal consistency: Preserve causality without requiring full ordering

Debugging and Monitoring

Tracing distributed systems requires understanding:
  • How to correlate events across different services
  • Which events might have caused which other events
  • How to reconstruct timelines when physical clocks disagree

CAP Theorem

Trade-offs between consistency, availability, and partition tolerance

Turing Lecture on Concurrency

Leslie Lamport’s overview of concurrency and distributed systems

Vector Clocks and Beyond

While not explicitly covered in the bootcamp papers, Lamport’s work on logical clocks led to several extensions:
Vector clocks extend logical clocks to capture causality more precisely:
  • Each process maintains a vector of timestamps (one per process)
  • Can determine if two events are concurrent or causally related
  • Used in systems like Riak and Voldemort
  • More overhead than Lamport clocks but provide stronger guarantees
Combine physical and logical time:
  • Use physical clocks when they provide useful information
  • Fall back to logical clocks when physical clocks are unreliable
  • Provide bounded divergence from physical time
  • Used in systems like CockroachDB and MongoDB

Timeline and Historical Context

Understanding the evolution of these ideas:
  1. 1978: Lamport publishes “Time, Clocks and Ordering of Events”
  2. 1994: Session Guarantees paper establishes consistency vocabulary
  3. 2000s: Cloud databases apply these concepts at massive scale
  4. 2010s: CRDTs provide alternative approach to ordering
  5. Today: Hybrid approaches combine multiple techniques
These papers from the 1970s-1990s remain essential reading because they establish the fundamental constraints that still apply to distributed systems today. Physical laws around speed of light and network delays haven’t changed - we’ve just gotten better at working within these constraints.

Further Reading

Distributed Systems Theory for Engineers

A comprehensive reading list building on these foundations

The Paper Trail Blog

Readable blog posts covering various aspects of time and ordering

Build docs developers (and LLMs) love