ZooKeeper: Wait-free Coordination for Internet-scale Systems
ZooKeeper offers a small hierarchical namespace with watches, ordered writes, and linearisable updates, and shows how clients compose locks, barriers, and group membership from those primitives. Reads are served locally by any replica for throughput; writes go through a leader.
Key ideas
- Provide primitives and let clients build the coordination they need
- Ordered, asynchronous operations give both speed and correctness
- Watches turn polling into notification
Why read it now
Kafka, HBase, and many in-house systems used it for membership and leader election, and its recipes are still how coordination problems are decomposed.
Question to keep in mind
What can go wrong if a client treats a ZooKeeper read as the latest state, and how do the recipes guard against it?