Unmesh Joshi's "Patterns of Distributed Systems" on the Thoughtworks website is an overview of the complexities and recurring solutions in distributed systems.
I found this link on the DistSys Reading Group on "Patterns of Distributed Systems". The site explores the challenges of building distributed systems, such as ensuring data consistency, handling process crashes, and dealing with network delays.
It introduces a series of design patterns that provide structured solutions to these common issues, facilitating the understanding, communication, and teaching of distributed system design. The patterns cover various aspects, from data replication and fault tolerance to event ordering and consensus algorithms.
Some key patterns include:
- Write-Ahead Log: Ensures data durability by logging changes before applying them to the database.
- Quorum: Requires a majority of nodes to agree on changes to maintain consistency and avoid split-brain scenarios.
- Leader and Followers: One node is elected as the leader to coordinate replication and maintain a high-water mark for visible changes.
- Lamport Clocks and Hybrid Clocks: Provide a way to order events across servers without relying on synchronized system clocks.