Build Raft — consensus you can defend

About Build Raft — consensus you can defend

Replicate a deterministic state machine across N servers with safety as a theorem and liveness under partial synchrony. Build the protocol from term to commit to safety proof to reads, and feel why etcd, Cockroach, and TiKV ship slightly different Rafts.

Difficulty
advanced
Time
about 100 minutes
Stages
9
Topic
Consensus, Coordination & Durable Execution

How this problem is worked

Nine stages, from what the thing is for to how it compares with the real implementations. Each asks one question, and the simulator runs the architecture you draw against the requirements you wrote.

  1. 01Purpose & invariantsWhat is this for, and what must always be true of it?
  2. 02Workload characterizationWho writes, who reads, and in what shapes?
  3. 03Data model & on-disk formatWhat does the data look like at rest?
  4. 04Core algorithmsHow do the write path and the read path actually work?
  5. 05Distribution & replicationHow does this scale out and survive losing a machine?
  6. 06Consistency & correctnessUnder concurrency and failure, what is guaranteed?
  7. 07Failure modes & recoveryWhat actually happens when each part fails?
  8. 08Operational characteristicsCan a human run this at three in the morning?
  9. 09Trade-offs & comparisonWhere does this sit against the alternatives?

Primary sources for this problem

  • Ongaro & Ousterhout — In Search of an Understandable Consensus Algorithm (USENIX ATC 2014)
  • Diego Ongaro — Consensus: Bridging Theory and Practice (Stanford PhD thesis, 2014)
  • etcd-io/raft — design doc + raft.go state machine
  • TiKV — Implementing Raft in Rust (PingCAP blog series)
  • hashicorp/raft — README + protocol notes
  • raft.github.io — canonical visualization

Browse the full problem catalog, or see what the simulator does and does not model.