3 releases

0.10.2 Mar 13, 2024
0.10.1 Mar 11, 2024
0.10.0 Mar 10, 2024

#778 in Algorithms

Download history 295/week @ 2024-03-06 198/week @ 2024-03-13 6/week @ 2024-03-20 17/week @ 2024-03-27 41/week @ 2024-04-03

65 downloads per month

MIT license

155KB
3.5K SLoC

lolraft

Crates.io Documentation CI MIT licensed

A Multi-Raft implementation in Rust language.

146726060-63b12378-ecb7-49f9-8025-a65dbd37e9b2

Features

スクリーンショット 2024-03-11 7 54 06

  • Implements all core 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.

Architecture

To implement Multi-Raft, the architecture is split into two spaces. One in the lower side is called "Pure Raft" layer which is totally unaware of gRPC and Multi-Raft. Therefore, it is called pure. The other side translates gRPC requests into pure requests and vice versa.

スクリーンショット 2024-03-11 8 00 03

Development

  • docker compose build to build test application.
  • TERM1: ./log to start log watcher.
  • TERM2: ./dev to start the dev container.
  • TERM2: cargo test.

Author

Akira Hayakawa
EMail: ruby.wktk@gmail.com

Dependencies

~10–21MB
~260K SLoC