这是我基于raft算法实现demo,里面我分为几个模块:一致性模块、日志模块、状态机模块、rpc模块、节点模块、定时器模块,通过模块划分让职责更清晰。在raftTest、raftTest中分别给出了选举、赋值的操作。也有节点宕机后的模拟。
不足之处:这是一个简易版的例子,对于实现内容都是通过简单的方式实现,比如说rpc通过map来储存数据,然后日志对比,如果不一致直接日志、状态机重新拷贝,去除一个一个对比的过程,当然如果你有更好的实现,可以通过pr或者issue优化这个项目。
编译需要、运行需求 JDK 8