栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ZooKeeper选举机制

ZooKeeper选举机制

前言

ZooKeeper集群里有一个Leader和若干个follower。当一台服务器初始化启动或集群中的Leader挂掉时,会发生选举。

相关概念

SID:服务器的ID。服务器初始化启动时是根据比较SID来进行选举的。
ZXID:事务ID。用来标识一次服务器状态的变更。在某一时刻,集群中每台服务器的ZXID值不一定相同,这和Zookeeper服务器对客户端的更新请求的处理逻辑有关。ZXID值越大说明数据越新。
Epoch:投票的次数(逻辑时钟),服务器每投完一次票,Epoch这个值就会增加。

初始化启动选举机制

假设Zookeeper集群中有5台服务器(图中的myid就是SID):

    服务器1启动,发起一次选举,服务器1会将票投给自己,此时服务器1为1票,不够半数以上(3票),选举无法完成,服务器1保持状态为LOOKING。服务器2启动,发起一次选举,服务器1和2都会将票投给自己,然后交换选票信息,此时服务器1发现服务器2的SID更大,所以更改选票投给服务器2。此时服务器2为2票,不够半数以上,选举无法完成,服务器1和2保持状态为LOOKING。服务器3启动,发起一次选举,在每个服务器都把票投给自己后,服务器1和2将票投给服务器3。此时服务器3为3票,票数超过半数,服务器3当选Leader。服务器1和2更改状态为FOLLOWING,服务器3更改状态为LEADING。服务器4启动,发起一次选举,此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息,服务器3为3票,服务器4为1票,此时服务器4服从多数,更改选票到服务器3,并更改状态为FOLLOWING。服务器5启动,过程同服务器4一样,更改状态为FOLLOWING。
运行时选举机制

当一台服务器运行期间无法和Leader保持连接时,会发起选举。此时集群中会有两种可能的状态:

    集群中存在Leader(没挂)

此时,这台服务器试图去选举时,会被其他服务器告知Leader的信息,只能去尝试和Leader服务器建立连接。

    集群中不存在Leader(挂了)

Leader挂了后,其他服务器会按照如下规则选举Leader:
(1)Epoch大的当选。
(2)Epoch相同,ZXID大的当选。
(3)ZXID相同,SID大的当选。

参考资料
    用大白话给你解释 ZooKeeper 的选举机制【尚硅谷】大数据技术之Zookeeper 3.5.7版本教程
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号