Skip to content

gterzian/understand-paxos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Understand Paxos

The Single-Decree Synod

Specifying, and implementing, the Basic Protocol as described in 2.3 of the original Paxos paper.

  1. Start the bootstap peer:
    • cargo run -p single_decree_synod --release -- --bootstrap --participant-id "1"
  2. Start two other peers:
    • cargo run -p single_decree_synod --release -- --participant-id "2"
    • cargo run -p single_decree_synod --release -- --participant-id "3"
  3. Watch the peers reach consensus on a single value.

Understand Paxos with Rust, Automerge, and TLA+ — Part 1: The Synod

Election

Specifying, and implementing, leader election for use with a Paxos implementation.

  1. Start the bootstap peer:
    • cargo run -p election --release -- --bootstrap --participant-id "1"
  2. Start two other peers:
    • cargo run -p election --release -- --participant-id "2"
    • cargo run -p election --release -- --participant-id "3"
  3. Watch the peers elect a single "true" leader at all times.

Understand Paxos with Rust, Automerge, and TLA+ — Part 2: Election

Multi-Decree

Specifying, and implementing, the Multi-Decree Parliement protocol as described in 3.1 of the original Paxos paper.

  1. Start the bootstap peer:
    • cargo run -p multi_decree --release -- --bootstrap --participant-id "1"
  2. Start two other peers:
    • cargo run -p multi_decree --release -- --participant-id "2"
    • cargo run -p multi_decree --release -- --participant-id "3"
  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 --crash flag.

Understand Paxos with Rust, Automerge, and TLA+ — Part 3: Multi-Decree

About

What makes Paxos tick?

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published