文件名称:raft:基于jrpc的RAFT共识算法的C ++实现
文件大小:22KB
文件格式:ZIP
更新时间:2024-06-07 16:02:31
raft raft-consensus C++
简介 该版本的raft实现源自,做完lab以后我尝试用C++实现一遍。相比于go语言的版本,这个版本的特点有: RPC框架使用了我自己写的,请求是异步的,而lab中是同步的 使用多线程 + EventLoop的并发模型,而不是goroutine 使用EventLoop, CountdownLatch之类的线程同步设施,拒绝直接使用mutex 使用JSON格式的序列化/反序列化,使用LevelDB持久化JSON文本(应该用protobuf ?) 功能 Leader election Log replication Persistence TODO Log compaction Test Benchmark 实现 一个raft节点有两个线程(即两个EventLoop),一个跑rpc server,另一个跑raft算法以及rpc client。若将这两部分放在一个线程里面固然可以简化代码(单线程
【文件预览】:
raft-master
----.gitignore(43B)
----.travis.yml(472B)
----raft()
--------Raft.h(4KB)
--------Config.h(1KB)
--------spec.json(624B)
--------RaftPeer.cc(3KB)
--------Node.cc(4KB)
--------Struct.h(1KB)
--------Random.h(427B)
--------Log.h(2KB)
--------Callback.h(1KB)
--------Node.h(3KB)
--------Log.cc(3KB)
--------Raft.cc(10KB)
--------RaftService.cc(2KB)
--------Storage.cc(4KB)
--------RaftService.h(1KB)
--------CMakeLists.txt(927B)
--------RaftPeer.h(1KB)
--------Storage.h(1KB)
----.gitmodules(89B)
----README.md(4KB)
----example()
--------demo.cc(1KB)
--------CMakeLists.txt(114B)
----build.sh(537B)
----3rd()
--------jrpc()
----CMakeLists.txt(1KB)