Raft协议
什么是Raft协议
Paxos论证了一致性协议的可行性,但是不好懂,缺少必要的细节,工程实现难度高。广为人知的实现目前只zk的zab协议。
Paxos的出现为分布式的强一致性提供了很好的理论基础,但是paxos协议本身理解起来困难,实现复杂。
斯坦福大学的RamCloud项目中提出了易理解、易实现的分布式一致性复制协议Raft。C++、Java和Go都有对应的实现,Raft相对简洁。
引入主节点、通过竞选确认主节点。节点;类型:follower、candidate和leader。
leader会周期性的发送心跳包给follower。每个follower设置一个随机的竞选超时时间,一般为150~300ms,如果在这个时间内没有收到心跳包,就会变成candidate。进入竞选阶段,通过竞选阶段投票人多的成为leader。
...大约 4 分钟