raft算法
三个角色
follower、candidate、leader。最开始大家都是follower,当follower监听不到leader,就可以自己成为candidate,发起投票
leader选举:timeout限制
选举的timeout
follower成为candidate的超时时间,每个follower都在150ms and 300ms之间随机,之后看谁先timeout,谁就先成为candidate,然后它会先投自己一票,再向其他节点发起投票邀请。
如果其他节点在这轮选举还没有投过票,那么就给candidate投票,然后重置自己的选举timeout。
如果得到大多数的投票就成为leader,之后定期开始向follower发送心跳。
如果两个follower同时成为candidate的话,如果最后得到的票数相同,则等待其他follower的选择timeout之后成为candidate,继续开始新一轮的选举。