ZooKeeper: Wait-free Coordination for Internet-scale Systems
Patrick Hunt, Mahadev Konar, Flavio P. Junqueira, Benjamin Reed2010USENIX ATC 2010
Read it on usenix.org(opens in a new tab)Why this one
Read this after Paxos Made Simple, because ZooKeeper is what happens when consensus stops being a theorem and becomes a service your production system can call. The central trick is not a magic lock server, it is a small ordered namespace with watches, ephemeral nodes, and versioned writes, from which clients build leader election, leases, barriers, and config rollout. People often get ZooKeeper wrong by treating it like a database or a mutex API. It is neither. It is a disciplined place to put the tiny bits of shared state that make large distributed systems agree on who is allowed to act. The paper is worth your evening because almost every serious system design eventually needs this layer, and bad coordination bugs look like rare outages until they become company folklore.
What to take away
- ZooKeeper gives you ordered, versioned znodes, then lets clients assemble locks, leases, barriers, and leader election above them.
- Ephemeral nodes tie coordination state to session liveness, which is the core move behind practical failure detection.
- Watches avoid polling, but they are one-shot hints, so clients must reread state and tolerate missed intent.
Reads with
- Paxos Made Simple
zookeeper turns paxos-style consensus into a production coordination service
- Building a Replicated Logging System with Apache Kafka
kafka uses zookeeper-style metadata coordination to manage brokers and partitions
- In Search of an Understandable Consensus Algorithm
raft is the consensus core you would put under a zookeeper-like service