All Projects → neverchanje → Yaraft

neverchanje / Yaraft

Licence: apache-2.0
Yet Another RAFT implementation

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Yaraft

Etcd
Distributed reliable key-value store for the most critical data of a distributed system
Stars: ✭ 38,238 (+34980.73%)
Mutual labels:  etcd, consensus, raft
Nuraft
C++ implementation of Raft core logic as a replication library
Stars: ✭ 428 (+292.66%)
Mutual labels:  consensus, raft
Patroni
A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes
Stars: ✭ 4,434 (+3967.89%)
Mutual labels:  etcd, raft
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (+405.5%)
Mutual labels:  consensus, raft
Floyd
A raft consensus implementation that is simply and understandable
Stars: ✭ 259 (+137.61%)
Mutual labels:  consensus, raft
Dragonboat
Dragonboat is a high performance multi-group Raft consensus library in pure Go.
Stars: ✭ 3,983 (+3554.13%)
Mutual labels:  consensus, raft
Async Raft
An implementation of the Raft distributed consensus protocol using the Tokio framework.
Stars: ✭ 510 (+367.89%)
Mutual labels:  consensus, raft
coolbeans
Coolbeans is a distributed work queue that implements the beanstalkd protocol.
Stars: ✭ 56 (-48.62%)
Mutual labels:  raft, consensus
Blog
my blog, using markdown
Stars: ✭ 25 (-77.06%)
Mutual labels:  etcd, raft
Tikv
Distributed transactional key-value database, originally created to complement TiDB
Stars: ✭ 10,403 (+9444.04%)
Mutual labels:  consensus, raft
Consensus Yaraft
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.
Stars: ✭ 30 (-72.48%)
Mutual labels:  consensus, raft
raft-rocks
A simple database based on raft and rocksdb
Stars: ✭ 38 (-65.14%)
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 (+1370.64%)
Mutual labels:  raft, consensus
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (+239.45%)
Mutual labels:  consensus, raft
raft
raft is a golang library that provides a simple, clean, and idiomatic implementation of the Raft consensus protocol
Stars: ✭ 35 (-67.89%)
Mutual labels:  raft, consensus
Ratis
Open source Java implementation for Raft consensus protocol.
Stars: ✭ 443 (+306.42%)
Mutual labels:  consensus, raft
little-raft
The lightest distributed consensus library. Run your own replicated state machine! ❤️
Stars: ✭ 316 (+189.91%)
Mutual labels:  raft, consensus
golearn
🔥 Golang basics and actual-combat (including: crawler, distributed-systems, data-analysis, redis, etcd, raft, crontab-task)
Stars: ✭ 36 (-66.97%)
Mutual labels:  raft, etcd
Hraftd
A reference use of Hashicorp's Raft implementation
Stars: ✭ 732 (+571.56%)
Mutual labels:  consensus, raft
Dister
dister(Distribution Cluster)是一款轻量级高性能的分布式集群管理软件,实现了分布式软件架构中的常用核心组件,包括:服务配置管理中心、服务注册与发现、服务健康检查、服务负载均衡。dister的灵感来源于ZooKeeper、Consul、Etcd,它们都实现了类似的分布式组件,但是dister更加的轻量级、低成本、易维护、架构清晰、简单实用、性能高效,这也是dister设计的初衷。
Stars: ✭ 41 (-62.39%)
Mutual labels:  etcd, raft

yaraft

Build Status

What is yaraft?

yaraft is a C++11 port of etcd/raft, which is a widely proven Raft library written in Go. Raft is a well-known distributed consensus algorithm. It's a practical solution designed for understandability, without sacrificing performance and fault-tolerance comparing to Paxos.

etcd/raft features at its minimalistic design that only the core Raft protocol is implemented. No RPC, no WAL storage, no multi-threaded environment. It has nothing more than a pure state machine, so that we can test it in a deterministic way. For state machines with the same state, the same state machine input should always generate the same state machine output.

APIs

Read docs/index.md for more details.

The public interfaces are under include/*.

  • include/conf.h: The configuration to control over the behavior of raft state machine.

  • include/raw_node.h: Main interface for controlling over raft state machine.

  • include/memory_storage.h: A copy of the uncompacted log entries that are kept in memory for efficient retrieval.

  • include/ready.h: The output of the state machine.

  • src/yaraft/thrift/: The thrift messages sent and received by yaraft. Read docs/message_types.md for more information.

  • include/logger.h: Logger is the interface for writing log messages. You can customize the logging mechanism by implementing the interface. By default logs are simply written to stderr.

  • include/errors.h: error_s is returned from many of the public interfaces and is used to report success and various kinds of errors.

Building from source

sudo apt-get -y install libboost-dev
bash install_deps_if_neccessary.sh
cd build && cmake .. && make && make install

Running the tests

$ BUILD=Debug STANDARD=11 ENABLE_GCOV=false ./run_tests.sh

you can run run_gcov.sh to generate the coverage report.

Contacts

Contact me or submit an issue if you have any questions about the project.

License

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