CRAQ
CRAQ is a chain-replication extension that distributes strongly consistent single-object reads across replicas using version-state checks.
A clean latest version can be read locally; a dirty one requires the tail's committed version number. Retained local bytes supply the response. Dirty is local knowledge: commitment can precede the returning acknowledgement. [1]
The published prototype stores objects in memory; protocol commitment does not establish disk persistence. [1]
In the optional eventual mode, the newest local version may be uncommitted, and switching replicas can reverse reads. Joining replicas withhold reads until synchronized. [1]
A delayed version reply can race local reclamation. In the archived code, the extended read handler can substitute the newest pending payload on a missing-version path while keeping the queried version label. [3]
Relations
Citations
- Jeff Terrace and Michael J. Freedman: Object Storage on CRAQ, USENIX ATC 2009
- CRAQ archived implementation: chain_node.Tc, commit c394900b4da3 (2012)