Specifying, and implementing, the Basic Protocol as described in 2.3 of the original Paxos paper.
- Start the bootstap peer:
cargo run -p single_decree_synod --release -- --bootstrap --participant-id "1"
- Start two other peers:
cargo run -p single_decree_synod --release -- --participant-id "2"cargo run -p single_decree_synod --release -- --participant-id "3"
- Watch the peers reach consensus on a single value.
Understand Paxos with Rust, Automerge, and TLA+ — Part 1: The Synod
Specifying, and implementing, leader election for use with a Paxos implementation.
- Start the bootstap peer:
cargo run -p election --release -- --bootstrap --participant-id "1"
- Start two other peers:
cargo run -p election --release -- --participant-id "2"cargo run -p election --release -- --participant-id "3"
- Watch the peers elect a single "true" leader at all times.
Understand Paxos with Rust, Automerge, and TLA+ — Part 2: Election
Specifying, and implementing, the Multi-Decree Parliement protocol as described in 3.1 of the original Paxos paper.
- Start the bootstap peer:
cargo run -p multi_decree --release -- --bootstrap --participant-id "1"
- Start two other peers:
cargo run -p multi_decree --release -- --participant-id "2"cargo run -p multi_decree --release -- --participant-id "3"
- Watch the peers reach consensus on a sequence of values, using it to implement a replicated state machine supporting "read" and "increment" operations on a number.
- To periodically simulate a participant crashing, use the
--crashflag.
Understand Paxos with Rust, Automerge, and TLA+ — Part 3: Multi-Decree