news 2026/4/2 6:19:41

ZooKeeper选举机制详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZooKeeper选举机制详解

Zookeeper选举机制——第一次启动

SID:服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致。
ZXID:事务ID。ZXID是一个事务ID,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关。
Epoch:每个Leader任期的代号。没有Leader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加。

(1)服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上(3票),选举无法完成,服务器1状态保持为LOOKING;
(2)服务器2启动,再发起一次选举。服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的myid比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器1票数0票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING
(3)服务器3启动,发起一次选举。此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数,服务器3当选Leader。服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;
(4)服务器4启动,发起一次选举。此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3,并更改状态为FOLLOWING;
(5)服务器5启动,同4一样当小弟。

Zookeeper选举机制——非第一次启动

SID:服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致。
ZXID:事务ID。ZXID是一个事务ID,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关。
Epoch:每个Leader任期的代号。没有Leader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加。

(1)当ZooKeeper集群中的一台服务器出现以下两种情况之一时,就会开始进入Leader选举:

• 服务器初始化启动。
• 服务器运行期间无法和Leader保持连接。

(2)而当一台机器进入Leader选举流程时,当前集群也可能会处于以下两种状态:
• 集群中本来就已经存在一个Leader。
对于第一种已经存在Leader的情况,机器试图去选举Leader时,会被告知当前服务器的Leader信息,对于该机器来说,仅仅需要和Leader机器建立连接,并进行状态同步即可。
• 集群中确实不存在Leader。
假设ZooKeeper由5台服务器组成,SID分别为1、2、3、4、5,ZXID分别为8、8、8、7、7,并且此时SID为3的服务器是Leader。某一时刻,3和5服务器出现故障,因此开始进行Leader选举。
(EPOCH,ZXID,SID )(EPOCH,ZXID,SID ) (EPOCH,ZXID,SID )
SID为1、2、4的机器投票情况: (1,8,1) (1,8,2) (1,7,4)

选举Leader规则:

①EPOCH大的直接胜出

②EPOCH相同,事务id大的胜出

③事务id相同,服务器id大的胜出

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/30 13:25:40

告别性能瓶颈:UXTU智能调优工具让x86设备重获新生

你是否曾经遇到过这样的困扰?新买的游戏本运行大型游戏时频繁掉帧,高性能工作站处理渲染任务时温度飙升,轻薄本在运行专业软件时卡顿不断。这些看似无解的性能问题,其实都源于硬件潜能未能充分释放。今天,我们将介绍一…

作者头像 李华
网站建设 2026/3/26 9:12:58

终极Nginx UI管理工具:一键实现可视化服务器配置与监控

终极Nginx UI管理工具:一键实现可视化服务器配置与监控 【免费下载链接】nginx-ui 项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui Nginx UI是现代化的Nginx图形化管理工具,专为简化复杂的服务器配置而设计。这款开源工具让开发者和运维…

作者头像 李华
网站建设 2026/3/27 17:17:44

重构网络扩展思维:群晖NAS USB网卡驱动的架构哲学

重构网络扩展思维:群晖NAS USB网卡驱动的架构哲学 【免费下载链接】r8152 Synology DSM driver for Realtek RTL8152/RTL8153/RTL8156 based adapters 项目地址: https://gitcode.com/gh_mirrors/r8/r8152 在传统技术思维中,网络扩展往往被简化为…

作者头像 李华
网站建设 2026/3/29 14:53:05

linux——调试

❀保持低旋律节奏->个人主页 专栏链接:《C学习》、《Linux学习》 文章目录代码功能:基本功能l (list)查看代码b n打断点info b查看断点d n删除断点 代码功能:跨段运行r(run)运行至第一个断点c(continue…

作者头像 李华
网站建设 2026/3/30 16:59:39

什么是智慧消防?优势有哪些?

传统消防如同手持水枪的守卫,依赖人力巡检与事后扑救。而智慧消防,则是为建筑与城市植入的一套“数字神经系统”,它能提前感知风险、智能分析火情、自动协同处置,实现火灾防控的智能化升级。智慧消防究竟是什么?智慧消…

作者头像 李华
网站建设 2026/3/23 8:00:16

Python语言编程导论第三章 编写程序

内容提要概述编程流程IDLE编辑器的使用Python的文件类型从键盘输入信息在屏幕上输出信息程序的组织一、概述到目前为止,我们编写的都是单行Python语句,并通过交互式命令行运行。这对于学习Python函数很有用,但需要编写大量Python代码时&#…

作者头像 李华