ELSEIF
Your brief EB
271 stories from 78 feeds 114 clusters Refreshed 15 minutes ago next pull 16:05

DATABASES Signal 406

Almost consensus: ABD and the edges of quorum replication

Illustration only Photo by Marc PEZIN on Unsplash

The article walks through ABD, a majority-quorum algorithm that implements a linearizable register, and shows why it does not achieve consensus or provide compare-and-swap semantics.

WHY IT MATTERS

Engineers who rely on simple quorum reads/writes for linearizability must recognize that such schemes cannot solve agreement problems that require consensus. Knowing ABD's limits helps decide when a lightweight register suffices and when a full consensus protocol like Paxos or Raft is necessary.

Written by elseif from the cluster below · every claim links back to a source

The three things worth knowing

01

ABD uses intersecting majorities for reads and writes to guarantee a linearizable register without running a consensus algorithm.

02

The algorithm cannot implement compare-and-swap because concurrent writes may leave different values on replicas despite quorum intersection.

03

A runnable Python demonstration illustrates ABD's behavior, its fault tolerance (up to ���n/2���−1 unavailable replicas), and where consensus-level coordination is still required.

THE READ

What the cluster adds up to.

ORIGINAL ANALYSIS

ABD (Attiya-Bar-Noy-Dolev) is presented as a classic majority-quorum construction from the 1990s that yields a linearizable distributed register. It is often introduced before Paxos or Raft because it is simpler than full consensus yet still exposes subtle distributed-systems challenges. The article situates ABD after Thomas’s 1979 majority-voting scheme and Gifford’s 1979 read-quorum extension, noting how both rely on quorum intersection to prevent conflicting updates.

The accompanying Python tour defines a Register holding a value and a timestamp, a Replica that updates only when the incoming timestamp is strictly greater (using the replica ID as a tie-breaker), and a TGCluster that creates a set of replicas and computes the majority size. A broadcast helper sends a message to all replicas and collects replies from the required quorum, allowing the implementation of GET and SET operations that together emulate a quorum-based read/write service.

Through this code the article demonstrates that ABD provides linearizability for individual registers: a read that contacts a majority is guaranteed to see the latest completed write. However, the same mechanism fails to solve consensus or to implement compare-and-swap. Concurrent writes can leave different values on different majorities, and without an additional agreement step the system cannot converge on a single value, showing ABD’s limitation to register-level semantics only.

Adopting ABD gives a fault-tolerant linearizable register that tolerates up to ���n/2���−1 replica failures with only two round-trips per operation (one to send the request, one to collect acknowledgments). The cost is the need to manage logical timestamps and handle tie-breaks, plus the latency of waiting for a majority. When an application requires operations that depend on global agreement, such as leader election, atomic compare-and-swap, or multi-object transactions, ABD is insufficient and a consensus protocol must be layered on top, increasing complexity and message overhead.

Written by elseif from the cluster below · checked for specifics the sources never contained

THE CLUSTER

Same story, 1 feed.

ORDERED BY FIRST SEEN
Lobsters Almost consensus: ABD and the edges of quorum replication Open ↗