1、选举相关概念:
选票:(myid,zxid,当前节点选取轮次,被推举服务器选举轮次,状态(looking))。
选举发生情况:启动时选举,运行时选举。
外部投票:其他服务器发送来的投票。
内部投票:服务器自身当前的投票。
选举轮次:epoch--leader选举周期。
pk:比较内部选票和外部选票,确定是否变更内部选票,主要是比较zxid和myid。
2、选举过程:
(1)每个服务器节点先初始化自己的选票,即(myid,zxid,当前节点选取轮次,被推举服务器选举轮次,状态(looking))。
(2)发送初始化选票到所有集群中的节点。
(3)接收外部选票
(4)判断选举轮次,内部选票选举轮次要是大于外部选票,就继续接收外部选票,如果小于等于外部的选举轮次,就进行选票pk,即判断自己是否要变更内部选票。
(5)变更内部选票,将选票发送至集群中。
(6)归档。每个节点将收到的所有外部选票进行归档。
(7)统计。判断是否有过半的服务器认可当前内部选票,如果是,那就选举结束,即超过一半选票同意新leader,那就成功。
来源:https://www.cnblogs.com/guoyu1/p/11992233.html