每个节点有三种状态:Follower,Candidate,Leader
每个节点上都有一个倒计时器 (Election Timeout),时间随机在 150ms 到 300ms 之间。有几种情况会重设 Timeout:
- 收到选举的请求
- 收到 Leader 的 Heartbeat (后面会讲到)
在 Raft 运行过程中,最主要进行两个活动:
- 选主 Leader Election
- 复制日志 Log Replication
http://thesecretlivesofdata.com/raft/
选举超时时间150ms-300ms,超时后成为提议者,向其他节点发送投票请求,如果节点未给其他节点投票,则给它投票,节点超时归0,如果得到大部分票则成为lead节点。lead节点不停给节点发送headbeat包,节点超过一定时间未回复则剔除。两个节点得到相同票数则再试一轮