KyoMel / Yogyakarta, Indonesia

Term 214214 / 344

Quorum Algorithms

Month
April 2026
Day
16
Source
2026/apr-term.md

Definition:

Quorum Algorithms are a class of distributed systems coordination algorithms that ensure consistency and fault tolerance by requiring that any operation — read, write, or decision — be acknowledged by a minimum threshold of nodes (a quorum) before it is considered successful — guaranteeing that any two operations always involve at least one node in common, making it mathematically impossible for conflicting decisions to be made simultaneously by different parts of a distributed system.

A quorum is not simply a majority vote — it is a mathematically precise overlap guarantee: the requirement that any two valid operations must share at least one witness node, ensuring that no two parts of a distributed system can ever independently believe contradictory things at the same time.

Background — Why Quorum Algorithms Exist Distributed systems face a fundamental problem: nodes fail, networks partition, and messages get lost — yet the system must still make correct decisions:

The Core Problem — Distributed Consensus:

You have 5 database servers storing the same data: Server 1: balance = $1,000 Server 2: balance = $1,000 Server 3: balance = $1,000 Server 4: balance = $1,000 Server 5: balance = $1,000

Two operations happen simultaneously: Client A (connected to servers 1,2): “Withdraw $800” Client B (connected to servers 4,5): “Withdraw $800”

Without Quorum: Server 1 approves: balance → $200 ✅ (thinks it’s fine) Server 4 approves: balance → $200 ✅ (thinks it’s fine) Both withdrawals succeed ❌ Account is now -$600 ❌ (double spend!)

With Quorum (need 3 of 5): Client A asks servers 1, 2, 3 → gets 3/5 agreement ✅ Client B asks servers 3, 4, 5 → Server 3 already committed to Client A’s transaction Server 3 REJECTS Client B’s request Client B cannot get 3/5 agreement ❌ Only ONE withdrawal succeeds ✅

The mathematical guarantee: Any two quorums of size 3 from a set of 5 MUST share at least one server in common That shared server prevents contradictions

Example:

Distributed Database with Quorum Writes A financial services company runs a distributed database across 5 nodes for their account balance system. Here is how quorum algorithms protect every transaction.

Comparing quorum configurations for N=5 nodes:

  All satisfy R + W > N = 5

  ┌────────────────────────────────────────────────────────┐
  │  CONFIG 1: W=3, R=3 (Balanced — most common)          │
  ├────────────────────────────────────────────────────────┤
  │  Write latency: wait for 3rd fastest node              │
  │  Read latency:  wait for 3rd fastest node              │
  │  Write availability: survives 2 node failures          │
  │  Read availability:  survives 2 node failures          │
  │  Best for: general-purpose databases                   │
  │  Used by: Cassandra default, DynamoDB strong reads     │
  └────────────────────────────────────────────────────────┘

  ┌────────────────────────────────────────────────────────┐
  │  CONFIG 2: W=5, R=1 (Write-heavy guarantee)           │
  ├────────────────────────────────────────────────────────┤
  │  Write latency: wait for ALL 5 nodes (slowest!)        │
  │  Read latency:  ANY single node (fastest!)             │
  │  Write availability: ANY failure = write fails ❌      │
  │  Read availability:  survives 4 node failures ✅       │
  │  Best for: write-once, read-many (audit logs)          │
  │  Tradeoff: strong read speed, fragile writes           │
  └────────────────────────────────────────────────────────┘

  ┌────────────────────────────────────────────────────────┐
  │  CONFIG 3: W=1, R=5 (Read guarantee)                  │
  ├────────────────────────────────────────────────────────┤
  │  Write latency: ANY single node (fastest!)             │
  │  Read latency:  wait for ALL 5 nodes (slowest!)        │
  │  Write availability: survives 4 failures ✅            │
  │  Read availability:  ANY failure = read fails ❌       │
  │  Best for: write-heavy, occasional strong reads        │
  └────────────────────────────────────────────────────────┘

  ┌────────────────────────────────────────────────────────┐
  │  CONFIG 4: W=1, R=1 (Eventual consistency — NO QUORUM)│
  ├────────────────────────────────────────────────────────┤
  │  R+W = 2, NOT > N=5  ← NOT a quorum configuration!   │
  │  Write latency: fastest possible                       │
  │  Read latency:  fastest possible                       │
  │  Consistency: NONE — may read stale data               │
  │  Best for: shopping carts, social likes, view counts   │
  │  Used by: DynamoDB eventual consistency, Cassandra ONE │
  └────────────────────────────────────────────────────────┘

Real-world Cassandra consistency levels:
  ONE:    R or W = 1                → eventual consistency
  QUORUM: R or W = ⌊N/2⌋+1         → strong consistency
  ALL:    R or W = N                → strongest, slowest
  LOCAL_QUORUM: quorum within DC    → geo-distributed

Keep reading