- CRDT's
- Kademlia, DHT's.
- P2P systems:
- Theory:
- FLP impossibility.
- Byzantine (Albanian) Generals problem.
- Safety, liveness, and consistency
- Paxos.
- Raft.
- Google systems:
- Facebook systems
- Amazon systems
- Cassandra / DHT
- Two-Phase Commit
- Two-Phase Lock
Weird ones:
- TLA+ specifications of Raft.
- Minimal Python implementations of Raft/Paxos.
- The Tail at Scale
- Microservices and the First Law of Distributed Objects
- Fallacies of distributed computing
- gRPC principles
- SSTable, Memtable, B-Tree, LSM Tree
- https://distributed-computing-musings.com/page/7/ - great overview
- https://decentralizedthoughts.github.io/videos/
- https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html
- LevelDB
- RocksDB.
- SQLite
- RQLite - distributed sqlite.
- FoundationDB - bought and open-sourced by Apple in 2015
Google Spanner runs two-phase commit over Paxos
To understand partitions, we need to know a little bit more about how Spanner works. As with most ACID databases, Spanner uses two-phase commit (2PC) and strict two-phase locking to ensure isolation and strong consistency. 2PC has been called the “anti-availability” protocol [Hel16] because all members must be up for it to work. Spanner mitigates this by having each member be a Paxos group, thus ensuring each 2PC “member” is highly available even if some of its Paxos participants are down. Data is divided into groups that form the basic unit of placement and replication.