akiradeveloper / lol

Licence: MIT license
A Raft implementation in Rust language. The name is not a joke.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to lol

MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (+356.92%)
Mutual labels:  raft, consensus-algorithm
Atomix
A reactive Java framework for building fault-tolerant distributed systems
Stars: ✭ 2,182 (+1578.46%)
Mutual labels:  raft, consensus-algorithm
Rsm
distributed computing toolkit in rust
Stars: ✭ 17 (-86.92%)
Mutual labels:  raft, consensus-algorithm
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (-13.85%)
Mutual labels:  raft, consensus-algorithm
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (+184.62%)
Mutual labels:  raft, consensus-algorithm
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (+323.85%)
Mutual labels:  raft, consensus-algorithm
Awesome Consensus
Awesome list for Paxos and friends
Stars: ✭ 1,619 (+1145.38%)
Mutual labels:  raft, consensus-algorithm
Logcabin
LogCabin is a distributed storage system built on Raft that provides a small amount of highly replicated, consistent storage. It is a reliable place for other distributed systems to store their core metadata and is helpful in solving cluster management issues.
Stars: ✭ 1,576 (+1112.31%)
Mutual labels:  raft
Sharkstore
distributed key - value persisted storage system
Stars: ✭ 165 (+26.92%)
Mutual labels:  raft
X0
Xzero HTTP Application Server
Stars: ✭ 111 (-14.62%)
Mutual labels:  raft
Trepang
Trepang is an implementation of Raft Algorithm in Go
Stars: ✭ 111 (-14.62%)
Mutual labels:  raft
Raft Rs
Raft distributed consensus algorithm implemented in Rust.
Stars: ✭ 1,859 (+1330%)
Mutual labels:  raft
openraft
rust raft with improvements
Stars: ✭ 826 (+535.38%)
Mutual labels:  raft
6.824 2017
⚡️ 6.824: Distributed Systems (Spring 2017). A course which present abstractions and implementation techniques for engineering distributed systems.
Stars: ✭ 219 (+68.46%)
Mutual labels:  raft
Mit 6.824 2018
Solutions to mit 6.824 2018
Stars: ✭ 158 (+21.54%)
Mutual labels:  raft
Braft
An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
Stars: ✭ 2,964 (+2180%)
Mutual labels:  raft
Bayard
A full-text search and indexing server written in Rust.
Stars: ✭ 1,555 (+1096.15%)
Mutual labels:  raft
Cete
Cete is a distributed key value store server written in Go built on top of BadgerDB.
Stars: ✭ 153 (+17.69%)
Mutual labels:  raft
Sofa Jraft
A production-grade java implementation of RAFT consensus algorithm.
Stars: ✭ 2,618 (+1913.85%)
Mutual labels:  raft
Verdi Raft
An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
Stars: ✭ 143 (+10%)
Mutual labels:  raft

lol

Crates.io documentation CI MIT licensed Tokei

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

Documentation

Features

  • Implements all basic Raft features: Replication, Leader Election, Log Compaction, Persistency, Dynamic Membership Change, Streaming Snapshot, etc.
  • Based on Tonic and efficient gRPC streaming is fully utilized in log replication and snapshot copying.
  • Phi Accrual Failure Detector is used in leader failure detection. This adaptive algorithm lets you not choose a fixed timeout number before deployment and makes it possible to deploy Raft node in Geo-distributed environment. This algorithm is also used in Akka.
  • Clear Abstractions: RaftApp is your application or state machine in Raft's context. RaftStorage is the abstraction of the backend storage with which both in-memory and persistent (backed by RocksDB) are supported.

Usage

Add this to your Cargo.toml.

[dependencies]
lol-core = "0.9"

Available feature flags:

  • simple: Enables SimpleRaftApp.
  • gateway: Enables Gateway to interact with the cluster.
  • rocksdb-backend: Enables RocksDB-backed RaftStorage.

Example

// Implement RaftApp for YourApp!
struct YourApp { ... }
impl RaftApp for YourApp {
    ...
}
// Initialize your app.
let app = YourApp { ... };
// Choose a backend.
let storage = storage::memory::Storage::new();
// This is the Id of this node.
let uri = "https://192.168.10.15:50000".parse().unwrap();
let config = ConfigBuilder::default().build().unwrap();
// Make a tower::Service.
let service = make_raft_service(app, storage, uri, config);
// Start a gRPC server with the service.
tonic::transport::Server::builder()
    .add_service(service)
    .serve(socket).await;

Related Projects

Development

Use docker container to make an dev environment on your computer.

  • ./dev to start the dev container

then

  • cargo build to compile the entire project
  • make test to run the regression tests
  • make bench to run the benchmark tests
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].