Sequence Number

System Design Interview - Chapter 7 - Design a Unique ID Generator in Distributed Systems

System Design Interview - Chapter 7 - Design a Unique ID Generator in Distributed Systems

Translations: RU

Generating unique ID seems to be a simple task, but it is not in a high-load distributed systems!

This topic consists of:

  • Understanding the requirements and why it is a complicated task
  • Possible solutions:
    • Multi-master replication
    • Universally unique identifier (UUID)
    • Ticket server
    • Twitter SNOWFLAKE approach (seems to be the best one!)
  • Details:
    • Timestamp
    • Sequence number
  • Other issues
    • Clock synchronization
    • Section length tuning
    • High availability

These items are disclosed in a very interesting Chapter 7 of the book:

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

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

Translations: RU

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: