两种发生情况:启动时选举或运行时选举
- 每个节点初始化自己的选票
(myid,zxid,当前节点选举轮次,被推举服务器选举轮次,状态)
myid自己确定,每个节点不同。zxid事务编号。选举轮次epoch - 发送初始化选票
- 接受外部选票
- 判断选举轮次zxid(大于外部转3,小于等于),进行PK
比较zxid,相同比myid - 变更投票,重新发送(选择zxid最大的)
- 归档。每个节点会将收到的所有外部选票进行归档
- 统计。判断是否有过半节点认可当前的内部投票,如果有则终止
两种发生情况:启动时选举或运行时选举