The First System Model: Where Availability Creates Work
Dynamo's placement and interface become meaningful only when they are followed through one request. This chapter connects the key's route, its preference list, and the system's failure response to one judgment: Dynamo can answer before every intended replica is current because it moves part of the work from immediate coordination to later handoff, repair, and reconciliation.
A normal request has a route, not a master
A client does not have to contact a single central server to use Dynamo. A request may arrive at any storage node, either through a generic load balancer or through a partition-aware client. If the receiving node is not an appropriate coordinator for the key, it forwards the request to one of the nodes in the key's preference list. The coordinator is therefore a role taken for a particular request, not a permanent master that owns the whole database.
The coordinator uses the shared membership and token information to identify the key's preference list. That list is made from distinct physical hosts, and the key's replicas are normally drawn from the highest-ranked members that are reachable. For a read, the coordinator gathers the required responses and processes the versions it finds. For a write, it creates the new version and sends it to the appropriate replica set. In both cases, the request is a small state machine: identify the participants, send the operation, wait for enough responses, retry or fail when the time bound is exceeded, and package the result.
This structure preserves the system's symmetry. Any node can receive work, and nodes share the responsibility for routing and storing data. The coordinator is still important: it owns the work of collecting responses and deciding what result to return. But it is not a central authority whose permanent availability controls every key. If the first node that could coordinate a request is unreachable, another eligible node can take over the request according to the configured rules.
The number of responses required is part of the service's configuration. R sets the minimum participation for a successful read, and W sets the minimum participation for a successful write; N describes the configured replica count. A request can therefore succeed without waiting for every possible replica, provided it reaches the threshold the service has chosen. This is the point where the abstract availability bargain becomes an execution rule: the system does not ask “are all copies present?” before every answer; it asks whether enough of the selected participants have responded for this operating point.
A commonly reported operating point is (N,R,W) = (3,2,2). In that configuration, a coordinator needs responses from two replicas for a successful read or write, not all three. If the third replica is slow or unreachable, the operation can still complete, but the missing participant may hold an older value or may not yet contain the new one. The numbers therefore describe the condition for this response, not a claim that the replicas are already synchronized. Increasing or lowering the thresholds changes how much failure and lag the foreground request can absorb; it does not remove the need for later convergence.