Agreed is an implementation of the Raft consensus protocol in Rust, intented to serve as a basis for distributed data systems.
- Fully asynchronous, built on top of Tokio.
- Pluggable storage and network layer.
- Log compaction with snapshots and snapshot streaming.
- Fully pipelined and batched log replication with congestion control.
- Single-node cluster membership change operations.
- Non-Voter nodes for data replication/change data capture.
- Instrumented with tracing.
NOTE: the appearance of the “section” symbols
§ throughout this project are references to specific sections of the Raft spec.
Raft runtime configuration.
Error types exposed by this crate.
Raft metrics for observability.
The Raft network interface.
Public Raft interface and data types.
The Raft storage interface and data types.
All possible states of a Raft node.
A trait defining application specific data.
A trait defining application specific response data.
A Raft node’s ID.