All Projects → neverchanje → Consensus Yaraft

neverchanje / Consensus Yaraft

Licence: apache-2.0
consensus-yaraft is a library for distributed, strong consistent, highly replicated log storage. It's based on yaraft, which is an implementation of the Raft protocol.

Projects that are alternatives of or similar to Consensus Yaraft

coolbeans
Coolbeans is a distributed work queue that implements the beanstalkd protocol.
Stars: ✭ 56 (+86.67%)
Mutual labels:  raft, consensus
raft-rocks
A simple database based on raft and rocksdb
Stars: ✭ 38 (+26.67%)
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 (+16.67%)
Mutual labels:  raft, consensus
Raft-Paxos-Sample
MIT6.824实现分布式一致性算法——Raft&Paxos
Stars: ✭ 37 (+23.33%)
Mutual labels:  raft, consensus
Hraftd
A reference use of Hashicorp's Raft implementation
Stars: ✭ 732 (+2340%)
Mutual labels:  consensus, raft
raftor
Distributed chat system built with rust
Stars: ✭ 31 (+3.33%)
Mutual labels:  raft, consensus
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (+1736.67%)
Mutual labels:  consensus, raft
Atomix
A reactive Java framework for building fault-tolerant distributed systems
Stars: ✭ 2,182 (+7173.33%)
Mutual labels:  consensus, raft
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (+1133.33%)
Mutual labels:  consensus, raft
Dragonboat
Dragonboat is a high performance multi-group Raft consensus library in pure Go.
Stars: ✭ 3,983 (+13176.67%)
Mutual labels:  consensus, raft
openraft
rust raft with improvements
Stars: ✭ 826 (+2653.33%)
Mutual labels:  raft, consensus
Ratis
Open source Java implementation for Raft consensus protocol.
Stars: ✭ 443 (+1376.67%)
Mutual labels:  consensus, raft
raft-badger
Badger-based backend for Hashicorp's raft package
Stars: ✭ 27 (-10%)
Mutual labels:  raft, consensus
little-raft
The lightest distributed consensus library. Run your own replicated state machine! ❤️
Stars: ✭ 316 (+953.33%)
Mutual labels:  raft, consensus
Sofa Jraft
A production-grade java implementation of RAFT consensus algorithm.
Stars: ✭ 2,618 (+8626.67%)
Mutual labels:  consensus, raft
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 (+5243.33%)
Mutual labels:  raft, consensus
Zatt
Python implementation of the Raft algorithm for distributed consensus
Stars: ✭ 119 (+296.67%)
Mutual labels:  consensus, raft
Verdi Raft
An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
Stars: ✭ 143 (+376.67%)
Mutual labels:  consensus, raft
Floyd
A raft consensus implementation that is simply and understandable
Stars: ✭ 259 (+763.33%)
Mutual labels:  consensus, raft
Nuraft
C++ implementation of Raft core logic as a replication library
Stars: ✭ 428 (+1326.67%)
Mutual labels:  consensus, raft

consensus-yaraft

Build Status

consensus-yaraft is an embeddable distributed log storage library that provides strong consistency based on the Raft algorithm.

Features

  • Fault tolerance & Strong consistency: every single log will be synchronously replicated through the Raft state machine. Failure of minority doesn't impede progress.
  • Multi Raft: A process creates 100 raft nodes doesn't have to create 100 threads. The background timer, the disk io thread pool (ReadyFlusher), even the FSM task queue, can be shared between raft nodes.
  • Simple: the basic operation for writing a slice of log includes only ReplicatedLog::Write.

Limitation

  • The library doesn't provide with client-interaction support.
  • Writes can only be applied to the leader. Any write operations to a non-leader will get rejected.

Installation

consensus-yaraft is written in C++11, please ensure a compiler with C++11 support is installed.

Ensure you have cmake, unzip, libtool, autoconf installed on your system.

Ensure you have leveldb, zlib, openssl installed, because brpc relies on them.

On Ubuntu 14.04

sudo apt install zlib1g-dev libboost-all-dev libsnappy-dev
bash install_dependencies.sh
bash compile_proto.sh
bash run.sh build

Once the building becomes success, the library would be installed in the directory output/.

Internals

For more details about the architecture and design of consensus-yaraft, please read this article. Currently we relies on brpc to implement network communication.

MemKV

apps/memkv is a prototype of using consensus-yaraft to implement a raft-based in-memory key-value store.

License

consensus-yaraft is under the Apache 2.0 license. See the LICENSE file for details.

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