Designing Data-Intensive Applications - Chapter 9 - Consistency and Consensus

Designing Data-Intensive Applications - Chapter 9 - Consistency and Consensus

Earlier the book club of our company has studied excellent book:

Martin Kleppmann - Designing Data-Intensive Applications

This is the best book I have read about building complex scalable software systems. 💪

As usually I prepared an overview and mind-map.

Chapter 9 tells about Consistency and Consensus in distributed systems. It covers the following topics:

  • What is consistency and eventual consistency
  • Linearizability. Why it is needed. Difference from Serializability. How to implement Linearizability. The cost of Linearizability. CAP theorem.
  • Ordering Guarantees. What is ordering and causality. It’s relation to Linearizability. Sequence Number Ordering and how to implement it. Total Order Broadcast and how to implement it.
  • Distributed Transactions and Consensus. Why we need Consensus and Distributed Transactions. How to implement them, related problems and software that helps.

Summary:

  • We do not need Consensus for EVERY operation:
    • We can use single leader with Linearizability, and Consensus for selecting new leader.
    • Or we can use Causal Consistency, and Consensus for some problem cases.
    • We also have specific software that implements Consensus.
  • Also some systems (leaderless / multileader) don’t need linearizability and can work with branching and merging.

Download full mind map (PDF)

See also: