当前位置: 首页 > article >正文

大数据学习(72)-zookeeper选举机制

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


ZooKeeper的选举机制是基于ZAB(Zookeeper Atomic Broadcast)协议的,这是一种基于Paxos协议的变种,专门用于ZooKeeper的分布式协调服务。该机制确保集群中只有一个领导节点(Leader),负责处理所有的写请求和大部分的读请求,其他的节点则作为跟随者(Follower)或观察者(Observer),负责处理读请求并接收来自领导者的更新。

一、选举流程

服务器状态初始化

        当一个新的ZooKeeper服务器加入集群时,它会向其他服务器发送一个LOOKING状态的消息,表明它处于寻找领导者的状态。

投票发起

        每个处于LOOKING状态的服务器都会为自己投票,并开始一个选举轮(Election Round)。投票信息包含所选举的leader的Server ID(SID)、数据ID(ZXID)和逻辑时钟(Epoch)。

传播投票结果

        服务器会向集群中的其他服务器传播自己的投票信息。

收集投票

        每个服务器都会收集来自其他服务器的投票,并计算当前得票最高的服务器。

判断与决策

        如果一个服务器发现当前的投票结果指向自己,并且没有收到更多指向其他服务器的投票(即获得了超过半数的支持),它将宣布自己为领导者,并向其他服务器发送一个LEADING状态的消息。

        其他服务器收到LEADING状态的消息后,确认领导者,并进入FOLLOWING状态,开始跟随领导者。

二、选举中的概念

Server ID(SID)

        服务器ID,用于区分不同的服务器实例,通常在配置文件中指定。在选举中,SID较大的服务器在ZXID相同时具有优先权。

Zookeeper Transaction ID(ZXID)

        事务的唯一标识符,是一个64位整数。它由高位32位的epoch(时期)和低位32位的counter(计数器)组成。ZXID较大的服务器被认为拥有更多的信息,因此更适合作为Leader。

Epoch(逻辑时钟)

        逻辑时钟或投票的次数,用于标识同一轮投票过程中的逻辑时钟值。每投完一次票,这个数据就会增加。

三、选举触发条件

服务器初始化启动

        当节点初始起动时会在集群中寻找Leader节点。如果找到,则与Leader建立连接,其自身状态变为Follower或Observer。如果没有找到Leader,当前节点状态将变为LOOKING,进入选举流程。

Leader故障

        如果Leader服务器宕机或无法与多数派Follower保持连接,所有Follower将进入LOOKING状态,并重新开始选举流程。


http://www.kler.cn/a/592030.html

相关文章:

  • Linux top 命令详解:从入门到高级用法
  • Leetcode Hot 100 46.全排列
  • 在LORA训练中,LORA模型的矩阵的行列是多少
  • 《Python深度学习》第五讲:文本处理中的深度学习
  • [HelloCTF]PHPinclude-labs超详细WP-Level 1-FILE协议
  • fastapi+tcp+android在线聊天
  • Vue3是如何利用Proxy进行双向数据绑定的(二)?
  • 【开源免费】基于SpringBoot+Vue.JS智慧生活商城系统(JAVA毕业设计)
  • 从Excel文件中读取数据
  • Spring Boot 应用的接口访问从 HTTP 改为 HTTPS
  • 16. C语言二级指针
  • Kali Linux汉化教程:轻松设置中文界面
  • 【MySQL】关闭外键约束检查
  • 操作系统知识点32
  • Linux 部署 Spring Boot 项目, Web项目(2025版)
  • 分页优化之——游标分页
  • 微服务》》四个问题
  • 非洲能源商会:架起中非能源合作的桥梁
  • 家里宽带上网无线路由器配置方案总结(有线路由器+多个无线WIFI)
  • java-正则表达式-集合-泛型