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:
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.