Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/ninokz/nbraft
- Owner: Ninokz
- License: mit
- Created: 2024-09-16T08:07:49.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2024-09-19T14:32:08.000Z (4 months ago)
- Last Synced: 2024-10-13T16:41:19.971Z (3 months ago)
- Topics: cpp11, raft, rpc-framework
- Language: C++
- Homepage:
- Size: 161 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
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)