Section 13: The Judges' Table - Final Summary & Candidate Scorecard
Executive Summary: This closing section turns the module into a way to grade yourself. We replay the twelve sections as the signal each one recorded, ledger the eleven decisions with what they rejected and what would flip them, lay out a 100-point scorecard in ZooKeeper terms, give score bands with remediation, and list the prompts that are this question in disguise.
The panel never graded the box labeled "ZooKeeper." They listened for whether you heard "two thousand services reinvent leader election" and reached for a lock() call, or whether you asked what the services actually needed and built them something smaller and harder to misuse. And when sch-1 froze for 15 s, they listened for whether you said "the settlement DB rejects its token because it has seen sch-2's higher czxid" or "its session expired, so it stopped."
The Arc, Replayed as Signal
- Framing (Sections 1–2): election, config and membership as the real jobs; linearizable writes and FIFO client order stated precisely.
- Estimation (Section 3): 600 MB on every server; 120,000 peak reads/s at 60% of 200,000; 2,400 peak writes/s at 12% of a 20,000 ceiling that more voters lower.
- API and data (Sections 4–5): seven wait-free calls; Sam's
setData(..., 7)becoming version 8; zxid0x5_0000a3f1as epoch plus counter. - Architecture (Section 6): local reads on any server; writes turned into idempotent transactions and committed on a quorum of 3.
- Deep dives (Sections 7–9): the hidden channel and
sync();0x5_0000a3f2truncated when S3 leads epoch 6; one notification per lock release instead of 20 MB. - Failure and growth (Sections 10–12): a 5 s failover inside a 10 s session; zone A lost with quorum intact; observers at 70%, separate ensembles past a few GB.
Key Insight: None of those signals is "knows Zab." The panel tests whether you know which mechanism keeps which promise: Zab's primary order keeps writes in one total order across leader changes, the last-zxid rule keeps a client from going back in time, sync() buys freshness one read at a time, and the czxid token protects the settlement DB when a session can't.
Quick check before moving on:
Sign in to continue reading
The rest of this lesson is available with a free account. Signing in with Google or Microsoft is free.
Sign in to read the full lesson