【大数据入门核心技术-Zookeeper】(三)Zookeeper的选举机制和流程

news2024/9/25 7:23:43

目录

一、Zookeeper的选举机制

1、每一个 Server 都会发出一个投票

2、接收来自各个 Server 的投票

3、处理投票

4、统计投票

5、改变服务器状态

二、Zookeeper的选举流程


一、Zookeeper的选举机制

Zookeeper 在配置文件中并没有指定 Master 和 Slave。但是,Zookeeper 工作时, 是有一个节点为 Leader,其他则为 Follower,而这个 Leader 是通过内部的选举机制临时产生的。

每个 Server 首先都提议自己是 Leader,并为自己投票,然后将投票结果与其他 Server 的选票进行对比,权重大的胜出,使用权重较大的选票更新自身的投票箱,我们介绍下服务器启动时期的 Leader 选举。

1、每一个 Server 都会发出一个投票

在集群初次启动时,每个 Server 都会推荐自己为 Leader,然后各自将这个投票发给集群中其他 Server。

2、接收来自各个 Server 的投票

每个 Server 在接收到其他 Server 的投票后,首先会判断该票的有效性,包括检查是否本轮投票,是否来自 Looking 状态的 Server。(Looking 状态表示当前集群正处于选举状态)

3、处理投票

针对每一个投票,Server 都会将别人的投票和自己的投票进行 PK,计算出 Zxid 最大的 Server,并将该 Server 设置成下一次投票推荐的 Server。

4、统计投票

每次投票结束之后,都会统计所有投票,获取投票最多的 Server 将成为获胜者,如果获胜者的票数超过集群个数的一半,则该 Server 将为推选为 Leader。否则继续投票,直至 Leader 被选举出来。

5、改变服务器状态

一旦 Leader 确定后,Leader 会通知其他 Follower 集群已经成为 Uptodate 状态,Follower 在收到 Uptodate 消息后,接收 Client 的请求并开始对外提供服务。

二、Zookeeper的选举流程

上述的选举过程比较抽象,我们以一个有5个节点的集群为例,目前均为 shutdown 状态。

按照 Server 的编号依次启动,看下整个的选举过程是如何实现的。

1、Server 1 启动

Server 1 启动后会提议自己为 Leader 并为自己投票,然后将投票结果发送给其他 Server,由于其他 Server 还未启动,因此收不到任何反馈信息,此时 Server 1 会处于 Looking 状态。

2、Server 2 启动

Server 2 启动后会提议自己为 Leader 并为自己投票,然后与 Server 1 交换投票结果,由于 Server 2 的编号大于 Server 1,因此 Server 2 胜出。但是,由于投票数未过集群数的一半,两个 Server 仍然均处于 Looking 状态。

3、Server 3 启动
 

 

Server 3 启动后会提议自己为 Leader 并为自己投票,然后与 Server 2、Server 3 交换投票结果,由于 Server 3 的编号最大,因此 Server 3 胜出。此时, Server 3 的票数大于集群数的一半了,因此 Server 3 会更新为 Leader ,Server 1、Server 2 更新为 Follower。

4、Server 4 启动

Server 4 启动后会提议自己为 Leader 并为自己投票,然后与 Server 1、Server 2、Server 3 交换投票结果,发现 Server 3 已经成为了 Leader,因此 Server 4 也成为了 Follower。

5、Server 5 启动

与 Server 4 一样,Server 5 启动后会给自己投票,然后与其他 Server 交换信息,发现 Server 3 已经成为了 Leader,因此 Server 5 也成为了 Follower。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试培训之十个无脚本测试方案

1.自然语言处理(NLP) 目前,一些最新的无脚本自动化测试工具能够通过采用NLP语法,来创建各种测试用例。就像编写简单的英语语句一样,用户可以轻松地实现测试用例的自动化。此类工具一般会带有AI驱动的内核,因此大幅节省了用户对其维…

【遥感图像融合:梯度指导:纹理细节】

GTP-PNet: A residual learning network based on gradient transformation prior for pansharpening (一种基于梯度变换的剩余学习网络) 提出了一种基于梯度变换先验的残差学习网络GTP-PNet,用于生成光谱分布准确、空间结构合理的高质量HRM…

车间生产设备管理有哪些问题?低代码来助力

随着科学技术对生产技术与生产工艺流程的不断改革创新,同时受市场变化的影响,企业生产管理模式也发生了巨大的改变,对车间生产设备管理的要求更高,并在一定层面推动了车间生产设备管理模式的创新和转变发展。但由于不同的企业面对…

JavaScript---DOM---DOM简介、获取元素、事件基础、操作元素---11.5

DOM简介 什么是DOM 文档对象模型(Document Object Model,简称DOM)是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。 W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、…

[附源码]计算机毕业设计springboot学生宿舍管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何在 Windows 10/8.1/8/7 上无密码删除 Deep Freeze

如何在 Windows 10/8.1/8/7 上无密码删除 Deep Freeze 有些人认真对待计算机安全问题。这些人会安装 Deep Freeze 冰点来保护他们的计算机。该应用程序的便利之处在于它会在重新启动时将计算机恢复到原始的预设配置。因此,可以轻松消除重启之间发生的任何变化&#…

海量数据如何在Web端实现动态可视化?看看这家企业是怎么做的

“我们TestLogger公司是一家赛车行业的软件公司,主要是通过分析在赛道上多个传感器收集到的赛车数据,帮助提高赛车性能。TestLogger Analyzer就是其中的一款核心数据分析工具,在我们构建该工具的第一个产品原型时,就发现由于不同类…

(附源码课件)10款Java小游戏满足你各种需求

游戏推荐 黄金矿工项目 飞机大战项目 超级玛丽项目 坦克大战项目 大鱼吃小鱼项目 飞翔的小鸟项目 扫雷项目 贪吃蛇项目 推箱子项目 本套视频课程包含: 1、王者荣耀项目 开发环境:jdk1.8 开发工具:eclipse JavaEE基础如下:变量、数据类型…

[附源码]计算机毕业设计springboot校友社交系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

uni-app入门:自定义tabbar

本文介绍如何使用vant Weapp定义自定义tabbar.按照自定义图标的方式进行添加: 自定义tabbar微信官方链接: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1.导入vant weapp并构建npm 项目根目录右键选择外部终端窗口中打开 …

Numpy入门[2]——Matplotlib 基础

Numpy入门[2]——Matplotlib 基础 参考: https://ailearning.apachecn.org/ Python直接使用plot()函数画图 使用Jupyter进行练习 在使用Numpy之前,需要了解一些画图的基础。 Matplotlib是一个类似Matlab的工具包,主页地址为 http://matplot…

梁建章:旅行重回全球时代主题 构建“创新与传承”大场景

近日,在“防疫二十条”等最新措施基础上,国内多地宣布优化调整防疫措施,旅游市场复苏节奏也有望加速推进。 12月2日,携程集团在澳门举办“与时聚进”2022全球合作伙伴峰会。携程集团联合创始人、董事局主席梁建章,携程…

JS中常用的Date内置对象&处理Date内置对象的一些方法

JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象 内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能 JavaScript 提供了多个内置对象:Math、 Date 、Array…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校教师科研能力评定系统40n60

要对当前自己的学校对于计算机毕业设计的要求以及严格程度有所了解,这个主要是借助上一届已经毕业的学长学姐了解一下,但是有一点要注意的是,对于每一届毕业生的毕业设计的处理,学校都有很大的调整,这一点尤其重要。其…

springboot基于微信小程序的社区居家养老互助服务管理平台设计与实现毕业设计源码062027

基于springboot微信小程序的社区居家养老互助系统 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小…

springboot毕业生跟踪调查管理系统毕业设计源码061528

springboot毕业生跟踪调查管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对毕业生跟…

使用Sinon和Rewire对JavaScript中的私有方法进行单元测试

我们曾经试图遵循良好的编程习惯,在创建和定义方法时尽可能按照“职责单一”和“开放-封闭”原则将那些没有必要暴露出来的方法定义为私有方法,但是在编写测试用例时又往往对这些设计原则嗤之以鼻,因为你会为无法编写测试这些私有方法的测试用…

OpenCV图像特征提取学习五,HOG特征检测算法

一、HOG向梯度直方图概述 向梯度直方图(Histogram of Oriented Gradient, HOG)特征是基于对稠密网格中归一化的局部方向梯度直方图的计算。此方法的基本观点是:局部目标的外表和形状可以被局部梯度或边缘方向的分布很好的描述,即使…

[附源码]计算机毕业设计springboot校园订餐系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Hive企业实战ORC表数据翻倍,颠覆你认知的Cluster by作用?

咱们玩开源和大数据领域的几乎天天和Exception和Error打交道,尤其是面对海量数据的存储计算,复杂业务场景的时候。 真正能让你学到东西的大数据都需要是符合大数据特点的数据,比如低价值密度,如何从一眼看不出价值的数据中挖掘出商…