Twitter

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 1 - Reliable, Scalable, and Maintainable Applications

Designing Data-Intensive Applications - Chapter 1 - Reliable, Scalable, and Maintainable Applications

Translations: RU

Earlier this year 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 (to better learn) I prepared an overview and mind-map.

Chapter 1:

  • Building blocks of the apps
  • What is Reliability, Scalability and Maintainability. Examples and definitions.
    • Faults and Failures
    • Performance, Load, Latency and Response Time
    • Operability, Simplicity, Evolvability
  • Why you should randomly kill your servers 😅
  • How Twitter delivers 12,000 tweets per second to 300,000 readers per second. (VERY interesting!)
  • How much money Amazon loses for each 100ms delay in their response time
  • How to quickly calculate percentiles for monitoring response time in PROD

Download full mind map (PDF)