zookeeper leader 选举机制
半数机制:
集群中半数以上节点存活,集群可用。多以zookeeper适合安装奇数台节点。
选举过程栗子:
假设有5节点,且没有历史数据。
id从1到5,依次启动。。。
node1启动,发起一次选举,先投自己1票,此时node1为1票,不够半数,无法完成选举,node1保持状态为looking。
node2启动,发起一次选举,node1、node2分别先投自己1票,此时node2的myid比node1大,node1更改选票为node2,此时node2为2票,node1为0票,不够半数,node1、node2保持looking。
node3启动,发起一次选举,node1、node2、node3分别先投自己1票,然后和上一阶段一样,node1投node2,node2把票都投node3,此时node3为3票(超过半数),node2为0票,node1位0票。node3当选leader更新状态为leader,node1、node2更改状态为flowing
node4启动,发起一次选举,此时node1、node2、node3不是looking状态,不会更改选票信息,node3为3票,node4为1票,少数服从多数,node4更新选票信息为node3,并更新状态为following
node5启动,同node4。