简单的raft C++实现 cxxraft实现的特性有: * 选举和心跳 * 日志副本 * 基于WAL的持久化 * batch RPC * 快速恢复 * 协程并发 * 不可靠网络模拟(目前仅供config debug使用) 测试部分是从MIT6.824中test_test.go文件适配过来的,详见test目录 你可以从中了解如何使用和改造raft,以及哪些需要注意的case 具体实现已经集成了我自己写的其它轮子,作为基础组件: * [json库](https://github.com/Caturra000/vsJSON) * [日志库](https://github.com/Caturra000/dLog) * [协程库](https://github.com/Caturra000/co) * [RPC库](https://github.com/Caturra000/tRPC) 只能运行在Linux x86-64环境,且编译要求gcc全家桶,C++17以上标准 要打log的话需要添加编译选项`-DCXXRAFT_FLAG_DLOG_ENABLE` 头文件目录默认`-Icxxraft` TODO & 吐槽 * 简化代码:注释和log比算法实现本身占比还要多了,以及一些私有接口是写得相当繁琐 * tRPC调整:在超时管理上RPC仍然是不够灵活处理,需要修改,但我还没想好怎么改 * 找bug:你知道port一堆go测试文件有多累多耗费时间吗(要是能对着抄就好了,然而并不能),难免有些地方存在疏漏