liveBook · Manning

Chapter 2: System models, order, and time

What you will learn in chapter 2 of Think Distributed Systems

The chapter introduces system models, order, and time as tools for reasoning about what distributed-system behavior can and cannot reveal.

After this chapter you will be able to

What it builds on

Section by section

Introduction

The chapter introduces system models, order, and time as tools for reasoning about what distributed-system behavior can and cannot reveal.

Key terms: synchronous system, asynchronous system, timing guarantees, known bound, system models, component and network behavior, order, physical time, logical time

2.1 System models

This section defines a system model and explains why a distributed algorithm’s correctness depends on its assumptions.

Key terms: system model, components, network, timing behavior, algorithm, protocol, correct

2.1.1 Theory and practice

This section distinguishes theoretical and practical system models while showing that some models are useful for both.

Key terms: theoretical system models, practical system models, impossibilities, possibilities, intersection, consensus algorithms, Viewstamped Replication, Paxos, Raft

2.1.2 Synchronous distributed systems

This section defines synchronous distributed systems by their clock and timing guarantees while separating those guarantees from assumptions about failures and message loss.

Key terms: synchronous distributed systems, physical time, bounded delay, bounded uncertainty, synchronous system model, component failure, message loss

2.1.3 Asynchronous distributed systems

Distinguishes two asynchronous system models by their treatment of time and explains why that difference matters for timeouts and solvability.

Key terms: asynchronous system model, no notion of time, weak notion of time, arbitrary delay, unknown deviation, timeouts, failure detection, failure mitigation, asynchronous system, component failure

2.1.4 Partially synchronous systems

This section introduces partial synchrony as a realistic system model and explains how protocol guarantees change when a system behaves asynchronously.

Key terms: partially synchronous system model, synchronous, asynchronous, safety, liveness, safety and liveness guarantees

2.1.5 Component and network behavior

This section defines common component and network failure behaviors used to describe a distributed system model.

Key terms: Crash-Stop failure, Omission failure, Crash-Recovery failure, internal or external steps, state, Byzantine failure, message reordering, message duplication, message loss, unreliable network

2.1.6 Realistic system models

The section combines timing, failure, and network assumptions into the practical system model used throughout the book.

Key terms: synchronous, asynchronous, partially synchronous, Crash-Stop failure, Omission failure, Crash-Recovery failure, volatile, durable, unreliable network

2.2 Order and time

The section uses a proposer–acceptor example to show why distributed systems need a shared order for dependent actions, what makes an ordering problem a race condition, and how a coordinator can establish an order.

Key terms: commutative, order, proposers, acceptors, race condition, possible executions, delivery order, coordinator, tag, missing requests

2.2.1 The happened-before relationship

This section defines happened-before as a partial order of distributed events and uses it to distinguish causal order and concurrency from physical-time parallelism.

Key terms: happened-before relationship, intracomponent, intercomponent, transitivity, partial order, concurrent, causality, concurrency, parallelism, logical clock

2.2.2 Time and clocks

This section introduces clock consistency as the condition that lets timestamps preserve the happened-before order of events across distributed components.

Key terms: clocks, timestamps, clock consistency, happened before, causal ordering

2.2.3 Physical time and physical clocks

This section explains why physical clocks cannot reliably order events across components and how synchronization and monotonic clocks address different parts of the problem.

Key terms: physical clock, physical time, wall clock, clock skew, clock drift, Network Time Protocol (NTP), NTP server, NTP clients, clock synchronization, time-of-day clock

2.2.4 Logical time and logical clocks

This section explains how logical clocks order events and shows how Kafka offsets and etcd sequence numbers act as logical timestamps within limited scopes.

Key terms: logical time, logical clocks, Lamport clock, happened-before relationship, logical timestamp, Apache Kafka, topic, partition, offset, etcd

2.2.5 Physical clocks vs. logical clocks

This section contrasts physical and logical clocks as complementary ways to reason about time and event order in distributed systems.

Key terms: physical clocks, logical clocks, clock drift, clock skew, synchronization problems

2.3 Summary

This chapter summary connects system-model assumptions and failures to algorithm correctness, then recaps why event order and logical clocks matter.

Where this is used later

Concepts explained in this chapter

← Chapter 1: Thinking in distributed systems: Models, mindsets, and mechanics Chapter 3: Failure tolerance →

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.