参考资料:
- http://thesecretlivesofdata.com/raft/
- https://www.cnblogs.com/mindwind/p/5231986.html
- https://blog.csdn.net/s15738841819/article/details/84286276
源码地址:https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/raft
本demo为raft的代码实现,如果想了解raft的详细信息请自行浏览参考资料
本demo展示了raft的部分功能,写的并不严谨,仅作为对raft的了解用途
实现功能:
- 节点状态分为Leader(领导者)、Follower(追随者)、Candidate(候选人)
- 节点间随机成为candidate状态并选举出Leader,且同时仅存在一个Leader
- Leader节点定时发送心跳检测至其他Follower节点
- Follower节点们超过一定时间未收到心跳检测,则Follower节点们重新开启选举
- 客户端通过http发送消息到节点A,如果A不是Leader则转发至Leader节点
- Leader收到客户端的消息后向Follower节点进行广播
- Follower节点收到消息,反馈给Leader,等待Leader确认<