Section 6: Every Node Is the Same Node - High-Level Architecture
Executive Summary: Dynamo has no master, no metadata server and no special tier. Each of our 66 nodes (22 per data center) runs the same three components: a request coordinator, a membership and failure-detection module that gossips, and a pluggable local persistence engine. The MD5 ring is cut into Q = 1,024 equal partitions. Each node holds about 46.5 partition replicas, and every partition's preference list is its first three distinct physical nodes clockwise, one per data center. Membership changes only when an administrator says so; gossip spreads it in well under 10 s, and 3 seed nodes keep the ring whole. The client library refreshes that view every 10 s, coordinates reads itself and sends writes straight to a top-N replica, which coordinates them; both run a (3, 2, 2) quorum. Each instance picks its own (N, R, W) and engine: that is what other teams tune.
Section 5 settled what one record looks like. Now the interviewer wants the boxes: where those 300 M carts live, and how a request finds one.
Interviewer: "Draw it. Start with the master."
You: "There isn't one, and that's the first decision I'll defend. Every node in the instance runs the same binary with the same three components. Any node can take any request, and losing any node loses nothing unique. If I add a master for membership or placement, I've added the one machine whose loss blocks writes, and Section 2 promised that adds never block. So the picture is the same box drawn 66 times."
Inside One Node
Node B is expanded; F and K contain exactly the same three parts.
- Request coordination runs a small state machine per request: find the preference list, fan out, count acks against R or W, time out, schedule repairs. The node running it is that request's coordinator.
- Membership and failure detection holds this node's copy of the full ring and gossips it. It also keeps a local opinion of which peers are answering (Section 9), never a global verdict.
- Local persistence is pluggable (Decision 7). For the cart's ~5 KB records it is Berkeley DB Transactional Data Store, the most common engine in the 2007 paper; an instance with larger objects could plug in MySQL. Records sit in per-partition files, which Section 7 cashes in.
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