techdiagrams.net
← All templates

Chain-replicated object store

Writes flow head → middle → tail, strong reads come from the tail, and CRAQ lets clean replicas serve reads — with high/low water marks tracking commit progress.

Open in editor — free, no login Download JSON
THE CHAIN — WRITE PATH IS THE REPLICATION PATHwritepropagatepropagate → commitack (HWM advances)strong readCRAQ: read if cleanepoch 7 · chain configWriterput(object)Readerget(object)HEADaccepts writesMIDDLEpropagates · serves clean readsTAILcommit point · strong readsChain mastermembership · epoch++ on failuresegmented log per node: appends land in theactive segment; everything below the low-watermark is truncated after snapshot — cheap GC.

What this design does

Chain replication gets you linearizability with a beautifully simple invariant: a write is committed exactly when it reaches the tail. CRAQ adds read throughput by letting any replica serve a read when its version is clean. This is the design inside many object stores and Azure Storage's stream layer — and the high-water-mark bookkeeping is the same trick Kafka uses.

The patterns it composes

Import it, attach your own numbers, and verify the design against failures — or read the engineering notes.