Zookeeper选举机制

节点状态

  • LOOKING
  • LEADING
  • FOLLOWERING
  • OBSERVE
zxid(zookeeper事务id):
zookeeper状态每次改变都会收到一个不同全局唯一的zxid,删除节点,创建节点都会使zookeeper状态改变,zxid不断递增

leader服务器选取规则:

  • 优先检查zxid,zxid大的作为leader服务器
  • zxid相同就比较myid大小,myid大的作为leader服务器
  • 只有获取过半server的支持才能成为leader

zookeeper选举算法:

  • basic paxos和fast paxos(FastLeaderElection-默认)
  • basic paxos:选举线程向所有server发起一次询问,按照服务器选取规则去比较,选出下一次要询问的server,当被选取的server有一般server支持,则成为leader服务器,不然就一直选举,直到选出了leader
  • fast paxos:一个server声明自己要做leader,其它server将配合工作,解决zxid和epoch冲突,并向该server发送接收提议的消息

举例说明选举过程

5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动
  1. 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking。

  2. 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。

  3. 服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为leader,服务器1,2成为follower。

  4. 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为follower。

  5. 服务器5启动,后面的逻辑同服务器4成为follower。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值