Crate raft_consensus

Source
Expand description

§Raft

This is a crate containing a Raft consensus protocol implementation and encoding/decoding helpers. This is a logic-only crate without any networking part.

To use Raft in it’s full strength using this crate, one should do the following:

  • determine and implement(or take ready ones) state machine and persistent log implementations

  • find or make a part responsible for passing peer and client messages over the wire and pass all these messages from to one of ...Consensus structures

  • define a ConsensusHandler with callbacks doing the job for passing messages generated by consensus to other nodes

Re-exports§

pub use consensus::Consensus;
pub use handler::ConsensusHandler;
pub use persistent_log::Log;
pub use shared::SharedConsensus;
pub use state_machine::StateMachine;

Modules§

consensus
Implementation of Raft consensus API
error
Error type with all possible errors
handler
Handlers for consensus callbacks
message
Messages that are passed during consensus work
persistent_log
The persistent storage of Raft state.
shared
Handle consensus from many threads
state
Provides consensus state type
state_machine
A StateMachine is a single instance of a distributed application. It is the raft libraries responsibility to take commands from the Client and apply them to each StateMachine instance in a globally consistent order.

Structs§

ClientId
The ID of a Raft client.
Entry
Type representing a log entry
LogIndex
The index of a log entry.
ServerId
The ID of a Raft server. Must be unique among the participants in a consensus group.
Term
The term of a log entry.