1、bully算法
通过如下几个步骤
1.启动节点ping协调器,获取当前集群状态(节点信息,集群名称等),若是协调器没有启动一直到ping通为止
2.不管能ping通,都会拿到对象activeMaster现役master
3.判断activeMaster的数量,0说明当前集群没有master,1表示当前集群已经选举完毕.
4.若是为1,当前节点启动Bully算法逻辑结束;若是为0,进入第5步(总会中止在这里)
5.启动时发现没有现役master,将集群中全部的master节点放到candidate的候选名单中.候选名单大于等于最小master数量,小于最小master数量.
6.若是candidate中大于等于master最小数量,从其中选举一个id值最小的节点放到activeMaster中,暂定为master,若是小于最小master转回第一步.
2、master宕机逻辑
在集群中,任意节点的变化,都会致使全部人记录的candidate/activeMaster发生变化
○ activeMaster发生变化(1-0),主节点宕机
从新进行选举
○ candidate发生变化,现役master正常,其余备选有宕机现象;
从新判断集群的最小个数(activeMaster+candidate个数>=最小master)算法