Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/baidu/braft
An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
https://github.com/baidu/braft
distributed-consensus distributed-storage raft raft-consensus-algorithm raft-cpp raft-cxx raft-protocol state-machine-replication
Last synced: 20 days ago
JSON representation
An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
- Host: GitHub
- URL: https://github.com/baidu/braft
- Owner: baidu
- License: apache-2.0
- Created: 2018-02-07T11:25:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-07-15T12:12:35.000Z (4 months ago)
- Last Synced: 2024-08-05T02:01:19.536Z (3 months ago)
- Topics: distributed-consensus, distributed-storage, raft, raft-consensus-algorithm, raft-cpp, raft-cxx, raft-protocol, state-machine-replication
- Language: C++
- Homepage:
- Size: 4.52 MB
- Stars: 3,864
- Watchers: 186
- Forks: 867
- Open Issues: 174
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/baidu/braft.svg?branch=master)](https://travis-ci.org/baidu/braft)
---
# Overview
An industrial-grade C++ implementation of [RAFT consensus algorithm](https://raft.github.io/) and [replicated state machine](https://en.wikipedia.org/wiki/State_machine_replication) based on [brpc](https://github.com/brpc/brpc). braft is designed and implemented for scenarios demanding for high workload and low overhead of latency, with the consideration for easy-to-understand concepts so that engineers inside Baidu can build their own distributed systems individually and correctly.It's widely used inside Baidu to build highly-available systems, such as:
* Storage systems: Key-Value, Block, Object, File ...
* SQL storages: HA MySQL cluster, distributed transactions, NewSQL systems ...
* Meta services: Various master modules, Lock services ...# Getting Started
* Build [brpc](https://github.com/brpc/brpc/blob/master/docs/cn/getting_started.md) which is the main dependency of braft.
* Compile braft with cmake
```shell
$ mkdir bld && cd bld && cmake .. && make
```* Play braft with [examples](./example).
* Installing from vcpkg
You can download and install `braft` using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
```sh
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install braft
```
The `braft` port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.# Docs
* Read [overview](./docs/cn/overview.md) to know what you can do with braft.
* Read [benchmark](./docs/cn/benchmark.md) to have a quick view about performance of braft
* [Build Service based on braft](./docs/cn/server.md)
* [Access Service based on braft](./docs/cn/client.md)
* [Cli tools](./docs/cn/cli.md)
* [Replication Model](./docs/cn/replication.md)
* Consensus protocol:
* [RAFT](./docs/cn/raft_protocol.md)
* [Paxos](./docs/cn/paxos_protocol.md)
* [ZAB](./docs/cn/zab_protocol.md)
* [QJM](./docs/cn/qjm.md)# Discussion
* Add Weixin id ***zhengpf__87*** or ***xiongk_2049*** with a verification message '**braft**', then you will be invited into the discussion group.