/lol

A Raft implementation in Rust language. The name is not a joke.

Primary LanguageRustMIT LicenseMIT

lol

This project in under complete reworking. Please wait for a while.

CI MIT licensed Tokei

A Raft implementation in Rust language. To support this project please give it a ⭐

Features

multi-raft

  • 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.

Architecture

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.

lol2 (1)

Development

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

Author

Akira Hayakawa
EMail: ruby.wktk@gmail.com