Dynamo, Cassandra, Riak use tunable quorums. Write to W replicas, read from R. If R + W > N, reads see the latest write. Elegant + tunable.

Client WriteClient ReadReplica AN=5, W=3Replica BReplica CReplica Dreads from hereReplica ER + W > N guarantees read sees writeR + W ≤ N = eventually consistentW=3R=3
Quorum: writes to W, reads from R, R+W>N gives strong consistency
Advertisement

The rule

R + W > N. Any read quorum must overlap any write quorum. Read sees at least one replica with the latest write.

The rule

R + W > N. Any read quorum must overlap any write quorum. Read sees at least one replica with the latest write.

Advertisement

W=3 R=3 N=5

Both quorums = 3. Overlap of 1 replica guaranteed. Read sees latest write. Strong consistency.

W=1 R=1

Fast + available. Read may see stale. Eventually consistent. Cassandra's default for high throughput.

W=N or R=N

Not required but supported. W=N means every write blocks on all replicas. R=N means every read waits for all. Latency + availability suffers.

Failure semantics

Can't reach W replicas → write fails (or waits). Availability impacted. Tune R + W based on consistency vs availability priority.

R+W>N is the whole thing. Tune per read/write path. Consistency dial + availability dial.