ZooKeeper之选举(fastleaderelection算法)
ZooKeeper之选举(fastleaderelection算法)
每个节点除了zxid,还会有一个myyid(在部署ZooKeeper的时候自己创建并编写任意不相同的数字)
- 启动选举
- 运行时选举
概念
- 外部投票:其他服务器发来的投票
- 内部投票:服务器自身的投票
- 选举轮次:leader周期,可以理解为epoch
pk:比较外部投票与内部投票,确定是否变更内部投票
- 每个节点初始化自己的选票(myid、zxid,当前节点选举轮次,被推荐的服务器选举轮次,状态(looking))
- 发送初始化选票
- 接受外部选票
- 判断选举轮次(大于外转3,小于、等于),进行PK
- 变更投票,重新发送
- 归档,每个节点会将收到的外部投票进行归档
- 统计。判断是否有过半的服务器认可当前的投票,如果则终止。