Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ninokz/nbraft

Raft Frameworks
https://github.com/ninokz/nbraft

cpp11 raft rpc-framework

Last synced: about 2 months ago
JSON representation

Raft Frameworks

Awesome Lists containing this project

README

        

# NBRaft
## Intro.

本项目是 Raft 共识算法的 C++ 实现,基于个人的RPC库([NBRpc](https://github.com/Ninokz/NBRpc))构建,NBRpc基于个人的([NBlib](https://github.com/Ninokz/NBlib))构建,底层封装自 `Boost.Asio`

## Dependency.

- [NBRpc](https://github.com/Ninokz/NBRpc): RPC Frameworks based on NBlib
- [NBlib](https://github.com/Ninokz/NBlib): Net lib based on boost.asio
- [Boost 1.85.0](https://www.boost.org/users/history/version_1_85_0.html)
- [jsoncpp 1.9.5](https://github.com/open-source-parsers/jsoncpp)

## Raft.

CAP理论

1. 一致性:所有分布式的数据在任何时候都要保持一致。一致性可能会导致系统不可用
2. 可用性:系统中所有正常的节点收到请求后必须给出响应,保证系统对外是可用的。
3. 分区容错性:分区是指分布式系统节点间通信出现问题,我们就称出现了分区。分区容错性就是说即使出现分区,集群依旧要正常运行。

Raft算法

Raft算法是一种分布式算法,旨在保证分布式系统中的数据一致性。 他把系统中的节点分为三类角色:追随者(接受leader的⼼跳和⽇志同步请求,投票给候选人)和候选人(选举过程中的临时角色,参与竞选leader)、leader领导者(统领整个集群,负责处理客户端请求、更新数据到其他节点)

## File Stru.

Raft 实现的核心包含在以下文件中:

- `raftNode.h` / `raftNode.cpp`:Raft 节点的实现
- `raft.h` / `raft.cpp`:主要的 Raft 算法实现。
- `raftRpcClientStub.h` / `raftRpcClientStub.cpp`:用于 Raft 通信的 RPC 客户端。
- `raftRpcServerStub.h` / `raftRpcServerStub.cpp`:用于 Raft 通信的 RPC 服务器。
- `raftrepeattimer.h`:Raft 算法中使用的重复计时器实现。
- `struct.h`:Raft 实现中使用的关键结构定义。

## Ref.

关于 Raft 共识算法的更详细信息,请参阅 [Raft 论文](https://raft.github.io/raft.pdf)