一、每个节点有三种状态:follower、candidate、leader。每个节点有一个定时器,时间到了就自动成为candidate,candidate先投自己一票,并向follower发送投票选举,follower收到投票选举会对比投票轮数,如果有效则投且只能投一次票,当获取到半数以上节点投票后,candidate就成为leader,并向follower发送心跳,follower收到心跳会重置定时器。
二、脑裂问题
两个leader会对比选举轮数,轮数大的成为leader。如果任期相同,对比follower数量,follower数量大的,成为leader。否则重新选举。
三、数据同步,数据同步可以放在心跳里,当半数以上follower完成同步后,则返回写数据成功。
原文:https://www.cnblogs.com/DjanFey/p/12348205.html