Not my first time implementing Raft. I wrote about another implementation in Go I did. But you don't learn a concept well until you've implemented it a few times. And I wanted some practice with Rust.
Achieved:
- No dependencies beyond the standard library.
- Leader election.
- Log replication.
Non-goals (for now):
- Production use.
- Snapshots and log truncation.
- Cluster membership changes.
$ cargo test
- The Raft Paper: In Search of an Understandable Consensus Algorithm
- Diego Ongaro's Thesis: Consensus: Bridging Theory and Practice
- Diego Ongaro's TLA+ spec: TLA+ specification for the Raft consensus algorithm