Expand description
§sdcons
sdcons
is an implementation of geo-replicated distributed consensus
algorithm. It is based on the paper:
SDPaxos: Building Efficient Semi-Decentralized Geo-replicated State Machines (ACM Symposium on Cloud Computing 2018, SoCC ’18)
Like original SDPaxos, sdcons
provides one-round-trip latency reading and
writing capabilities under realistic configurations (deployed with three or
five nodes).
In addition, I ported some optimizations mentioned in the raft algorithm to SDPaxos. Including:
- log term
- leader election
- leadership transfering
- membership configuration (joint consensus)
- batched & pipelined log replication
- lease reading
These optimizations make SDPaxos easier to implement and verify.
However, the current sdcons
has not yet implemented the Straggler
detection mentioned in the SDPaxos paper.
Unlike SDPaxos, sdcons
uses the term channel
to represent the paxos
commiting progress. The Ordering instance is represented as Index, the
Command instance is represented as Entry. Because the term index is used to
represent Ordering instance, I choose term id to represent the index in
raft.
Re-exports§
pub use crate::storage::LogMetaView;
Modules§
- constant
- The crate
constant
defines a set constant used by sdcons. - storage
- The crate
storage
defines a set of structs and traits which are used to store/access log sequences. - types
- The crate
types
defines a set types used by sdcons.
Structs§
- MsgBuilder
- A helper struct contains all infos about how to create a message.
- Post
Ready - A struct records info generated by
RawNode::advance()
and used inRawNode::post_advance()
. - RawNode
- A structure that users can use directly, and any sdcons-related operations need to be forwarded through this structure.
- Sdcons
Option - The options for create a sdcons node.
- Write
Task - WriteTask records all info to persistent.
Enums§
Traits§
- Advance
Template - A template-method trait descript the actions used in
RawNode::advance()
. - LogReader
- A trait is used by
RawNode
to load logs from persistent device. - Role
Observer - A trait describes a set observer function invoked when a channel role is changed.