This project in under complete reworking. Please wait for a while.
A Raft implementation in Rust language. To support this project please give it a ⭐
- Implements all fundamental Raft features for production use.
- Supports Multi-Raft. Mutliple Raft processes can coexist in a single OS process so they can share resources efficiently.
- Based on Tonic and efficient gRPC streaming is exploited in log replication and snapshot.
- Phi Accrual Failure Detector is used for leader failure detection. The adaptive algorithm allows you to not choose a fixed timeout number in prior to deployment and makes it possible to deploy Raft node in even Geo-distributed environment.
To implement Multi-Raft, the architecture is divided into two spaces. One in the lower side is called "Pure Raft" layer which is totally unaware of gRPC and Multi-Raft. Therefore, called pure. The other side translates gRPC requests into pure requests and vice versa.
docker compose build
to build test servers.- TERM1:
./log
to start log watcher. - TERM2:
./dev
to start the dev container. - TERM2:
cargo test
.
Akira Hayakawa
EMail: [email protected]