All Projects → async-raft → Async Raft

async-raft / Async Raft

Licence: other
An implementation of the Raft distributed consensus protocol using the Tokio framework.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Async Raft

raftor
Distributed chat system built with rust
Stars: ✭ 31 (-93.92%)
Mutual labels:  raft, consensus
FISCO-BCOS
FISCO BCOS是由微众牵头的金链盟主导研发、对外开源、安全可控的企业级金融区块链底层技术平台。 单链配置下,性能TPS可达万级。提供群组架构、并行计算、分布式存储、可插拔的共识机制、隐私保护算法、支持全链路国密算法等诸多特性。 经过多个机构、多个应用,长时间在生产环境中的实践检验,具备金融级的高性能、高可用性及高安全性。FISCO BCOS is a secure and reliable financial-grade open-source blockchain platform. The platform provides rich features including group architecture, cross-chain communication protoc…
Stars: ✭ 1,603 (+214.31%)
Mutual labels:  raft, consensus
little-raft
The lightest distributed consensus library. Run your own replicated state machine! ❤️
Stars: ✭ 316 (-38.04%)
Mutual labels:  raft, consensus
raft-badger
Badger-based backend for Hashicorp's raft package
Stars: ✭ 27 (-94.71%)
Mutual labels:  raft, consensus
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (-27.45%)
Mutual labels:  consensus, raft
openraft
rust raft with improvements
Stars: ✭ 826 (+61.96%)
Mutual labels:  raft, consensus
raft
raft is a golang library that provides a simple, clean, and idiomatic implementation of the Raft consensus protocol
Stars: ✭ 35 (-93.14%)
Mutual labels:  raft, consensus
Javelin
[Mirror] RTMP streaming server written in Rust
Stars: ✭ 77 (-84.9%)
Mutual labels:  async, tokio
Dragonboat
Dragonboat is a high performance multi-group Raft consensus library in pure Go.
Stars: ✭ 3,983 (+680.98%)
Mutual labels:  consensus, raft
Floyd
A raft consensus implementation that is simply and understandable
Stars: ✭ 259 (-49.22%)
Mutual labels:  consensus, raft
Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (-54.71%)
Mutual labels:  async, tokio
Nuraft
C++ implementation of Raft core logic as a replication library
Stars: ✭ 428 (-16.08%)
Mutual labels:  consensus, raft
Async Tungstenite
Async binding for Tungstenite, the Lightweight stream-based WebSocket implementation
Stars: ✭ 207 (-59.41%)
Mutual labels:  async, tokio
Raft-Paxos-Sample
MIT6.824实现分布式一致性算法——Raft&Paxos
Stars: ✭ 37 (-92.75%)
Mutual labels:  raft, consensus
Rust S3
Rust library for interfacing with AWS S3 and other API compatible services
Stars: ✭ 177 (-65.29%)
Mutual labels:  async, tokio
coolbeans
Coolbeans is a distributed work queue that implements the beanstalkd protocol.
Stars: ✭ 56 (-89.02%)
Mutual labels:  raft, consensus
Sofa Jraft
A production-grade java implementation of RAFT consensus algorithm.
Stars: ✭ 2,618 (+413.33%)
Mutual labels:  consensus, raft
Heim
Cross-platform async library for system information fetching 🦀
Stars: ✭ 572 (+12.16%)
Mutual labels:  async, tokio
raft-rocks
A simple database based on raft and rocksdb
Stars: ✭ 38 (-92.55%)
Mutual labels:  raft, consensus
Dotnext
Next generation API for .NET
Stars: ✭ 379 (-25.69%)
Mutual labels:  async, raft

async raft

An implementation of the Raft distributed consensus protocol using the Tokio framework. Please ⭐ on github!

Build Status Crates.io docs.rs License Crates.io Crates.io


Blazing fast Rust, a modern consensus protocol, and a reliable async runtime — this project intends to provide a consensus backbone for the next generation of distributed data storage systems (SQL, NoSQL, KV, Streaming, Graph ... or maybe something more exotic).

The guide is the best place to get started, followed by the docs for more in-depth details.

This crate differs from other Raft implementations in that:

  • It is fully reactive and embraces the async ecosystem. It is driven by actual Raft events taking place in the system as opposed to being driven by a tick operation. Batching of messages during replication is still used whenever possible for maximum throughput.
  • Storage and network integration is well defined via two traits RaftStorage & RaftNetwork. This provides applications maximum flexibility in being able to choose their storage and networking mediums. See the storage & network chapters of the guide for more details.
  • All interaction with the Raft node is well defined via a single public Raft type, which is used to spawn the Raft async task, and to interact with that task. The API for this system is clear and concise. See the raft chapter in the guide.
  • Log replication is fully pipelined and batched for optimal performance. Log replication also uses a congestion control mechanism to help keep nodes up-to-date as efficiently as possible.
  • It fully supports dynamic cluster membership changes according to the Raft spec. See the dynamic membership chapter in the guide. With full support for leader stepdown, and non-voter syncing.
  • Details on initial cluster formation, and how to effectively do so from an application's perspective, are discussed in the cluster formation chapter in the guide.
  • Automatic log compaction with snapshots, as well as snapshot streaming from the leader node to follower nodes is fully supported and configurable.
  • The entire code base is instrumented with tracing. This can be used for standard logging, or for distributed tracing, and the verbosity can be statically configured at compile time to completely remove all instrumentation below the configured level.

This implementation strictly adheres to the Raft spec (pdf warning), and all data models use the same nomenclature found in the spec for better understandability. This implementation of Raft has integration tests covering all aspects of a Raft cluster's lifecycle including: cluster formation, dynamic membership changes, snapshotting, writing data to a live cluster and more.

If you are building an application using this Raft implementation, open an issue and let me know! I would love to add your project's name & logo to a users list in this project.

contributing

Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.

license

async-raft is licensed under the terms of the MIT License or the Apache License 2.0, at your choosing.


NOTE: the appearance of the "section" symbols § throughout this project are references to specific sections of the Raft spec.

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