• 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