Using CRDTs to Build a Highly Available Decentralized Service
summary
Bread implements a highly available decentralized service in Go that uses CRDTs, a gossip layer and sidecar deployment to let any replica answer reads and converge asynchronously. Concrete implementations include state-based vs operation-based CRDTs, a PN-counter (increments/decrements via two vectors) and an OR-like set with timestamps to let adds win concurrent removes. A memberlist-style gossip transports deltas; tests focus on merge functions, clocks (vector+logical), and small clusters (three replicas) to validate convergence.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 1:14Outline
- 1:52Consistency
- 4:49Conflictfree replicated data types
- 6:55Statebased vs operationbased
- 10:33Replicas
- 14:17Counters
- 21:35PM Counter
- 29:01Advantages Disadvantages
- 30:02Operation Based
- 31:55Clock
- 38:15Contextual Series
- 40:05Conclusion
- 41:29Delivery
- 42:36Miscellaneous
- 45:40Integration Testing
- 47:34Conclusions
related talks
39mBuilding a Clustered Service in Go
36mConflict-Free Replicated Datatypes (CRDT)
43mBuild Your Own Distributed System Using Go
48mCRDTs: From sequential to concurrent executions
22mHappily Ever After: A CRDT Fairy Tale
34mUsing CRDTs Beyond Text Editors
39mEventually Consistent Data Structures
41mConsistency without consensus in production systems
