Expand description
Distributed algorithms, written as sans-IO protocols.
Each module is one abstraction from Cachin, Guerraoui & Rodrigues, Introduction to Reliable and Secure Distributed Programming — transcribed so that the code can be read against the page. The pseudocode each one implements is quoted in its module documentation.
The bottom abstraction, fair-loss links, is not here: it is what the simulator provides.
Re-exports§
pub use best_effort_broadcast::BestEffortBroadcast;pub use consensus_based_total_order_broadcast::ConsensusBasedTotalOrderBroadcast;pub use detector::Detector;pub use detector::DetectorInd;pub use eventually_perfect_failure_detector::EventuallyPerfectFailureDetector;pub use fair_loss_link::FairLossLink;pub use flooding_consensus::FloodingConsensus;pub use logged_epoch_change::LoggedEpochChange;pub use logged_epoch_consensus::LoggedEpochConsensus;pub use logged_leader_driven_consensus::LoggedLeaderDrivenConsensus;pub use logged_link::LoggedLink;pub use logged_uniform_reliable_broadcast::LoggedUniformReliableBroadcast;pub use logged_uniform_total_order_broadcast::LoggedUniformTotalOrderBroadcast;pub use majority_ack_uniform_reliable_broadcast::MajorityAckUniformReliableBroadcast;pub use multi_paxos_replica::MultiPaxosReplica;pub use multi_paxos_synod::MultiPaxosSynod;pub use note::Note;pub use note::Refusal;pub use perfect_failure_detector::PerfectFailureDetector;pub use perfect_link::PerfectLink;pub use reliable_broadcast::ReliableBroadcast;pub use session_link::SessionLink;pub use stubborn_broadcast::StubbornBroadcast;pub use stubborn_link::StubbornLink;pub use timing::Timing;pub use total_order_log::LogInd;pub use total_order_log::TotalOrderLog;pub use uniform_reliable_broadcast::UniformReliableBroadcast;
Modules§
- best_
effort_ broadcast - Best-effort broadcast.
- consensus_
based_ total_ order_ broadcast - Consensus-based total-order broadcast.
- detector
- The detector port: what a layer above a failure detector may depend on, and the whole of it.
- epoch_
change - Epoch-change — a sequence of epochs, each with a timestamp and a leader.
- epoch_
consensus - Read/write epoch consensus — the quorum core, and where Paxos’s safety argument lives.
- eventual_
leader_ detector - Ω — an eventual leader detector.
- eventually_
perfect_ failure_ detector - Eventually perfect failure detection — ◇P.
- fair_
loss_ link - Fair-loss point-to-point links — the bottom of the stack, and the weakest link there is.
- flooding_
consensus - Flooding consensus.
- lazy_
probabilistic_ broadcast - Lazy probabilistic broadcast — gossip, then pull back what it missed.
- leader_
driven_ consensus - Leader-driven consensus — Paxos.
- link
- The link port: what a layer above the link may depend on, and the whole of what it may.
- logged_
epoch_ change - Epoch-change that survives a restart.
- logged_
epoch_ consensus - Read/write epoch consensus that survives a restart.
- logged_
leader_ driven_ consensus - Paxos that survives a restart.
- logged_
link - Logged perfect point-to-point links.
- logged_
uniform_ reliable_ broadcast - Logged uniform reliable broadcast.
- logged_
uniform_ total_ order_ broadcast - Logged uniform total-order broadcast.
- majority_
ack_ uniform_ reliable_ broadcast - Majority-ack uniform reliable broadcast.
- multi_
paxos_ replica - The Multi-Paxos replica: slots become positions in a log.
- multi_
paxos_ synod - The Synod protocol of Multi-Paxos: ballots, acceptors, scouts, commanders and leaders.
- note
- What a protocol says about a decision it took.
- perfect_
failure_ detector - Perfect failure detection.
- perfect_
link - Perfect point-to-point links.
- probabilistic_
broadcast - Eager probabilistic broadcast — gossip.
- reliable_
broadcast - Regular reliable broadcast.
- session_
link - A link whose guarantees come from an underlying session.
- stacks
- Ready-made compositions: a layer, spelled with the link it runs over.
- stubborn_
broadcast - Stubborn best-effort broadcast.
- stubborn_
link - Stubborn point-to-point links.
- timing
- The durations the leader-driven family is configured with.
- total_
order_ log - The total-order log port: what a layer above a totally ordered log may depend on, and the whole of what it may.
- uniform_
reliable_ broadcast - Uniform reliable broadcast.