- Serializability: isolation between transactions—as if transactions run sequentially.
- Serializability: multi-operation, multi-object, arbitrary total order
- Linearizability: multiple replicas behaving as if there was a single replica/single copy of data. Every operation happens atomically.
- Consequence: each op returns up-to-date value
- Applies to distributed systems and shared-memory concurrency (multi-core CPU caches)
- Linearizability: single-operation, single-object, real-time order
- Raft
- Leader election
- Node state is either follower, leader, or candidate
- On leader heartbeat timeout: turn self into candidate, request votes from others
- Everyone votes on longest/most complete log, then on first to timeout (everyone has random timeouts)
- On stalemate, timeout and retry
- Log replication
- Replication requires majority quorum
- Log entry state is either appended or committed, commits via 2pc
- 3PC: avoid disk write by treating nodes as disk