leader选举

服务器状态

  • looking:寻找leader状态。当服务器处于该状态时,它会认为当前集群中没有leader,因此需要进入leader选举状态

  • following:跟随着状态。表明当前服务器角色是follower

  • observing:观察者状态。表明当前服务器角色是observer

分为两种选举,服务器启动时的选举服务器运行时期的选举

服务器启动时期的leader选举

在集群初始化节点,当有一台服务器server1启动时,其单独无法进行和完成leader选举,当第二台服务器server2启动时,此时两台及其可以相互通信,每台及其都试图找到leader于是进入leader选举过程。选举过程如下:

  myid:配置集群时的服务id ,server.x

  1. 每个server发出一个投票。由于是初始状态,server1server2都会将自己作为leader服务器来进行投票,每次投票都会包含所推举的myidzxid,使用(myid,zxid),此时server1的投票为(1,0),server2的投票为(2,0),然后各自将这个投票发给集群中的其它机器

  2. 集群中的每台服务器都接收来自集群中各个服务器的投票

  3. 处理投票。针对每一个投票,服务器都需要将别人的投票和自己的投票进行pk,规则如下

    • 优先检查zxidzxid比较大的服务器优先作为leader(zxid较大者保存的数据更多)

    • 如果zxid相同。那么就比较myidmyid较大的服务器作为leader服务器

      对于Server1而言,它的投票是(1,0),接收Server2的投票为(2,0),首先会比较两者的zxid,均为0,再比较myid,此时server2myid最大,于是更新自己的投票为(2,0),然后重新投票,对于server2而言,无需更新自己的投票,只是再次向集群中所有机器发出上一次投票信息即可

  4. 统计投票。每次投票后,服务器都会统计投票信息,判断是否已经有过半机器接受到相同的投票信息,对于server1、server2而言,都统计出集群中已经有两台机器接受了(2,0)的投票信息,此时便认为已经选举出了leader

  5. 改变服务器状态。一旦确定了leader,每个服务器就会更新自己的状态,如果是follower,那么就变更为following,如果是leader,就变更为leading

举例:如果我们有三个节点的集群,1,2,3,启动 1 和 2 后,2 一定会是 leader,3 再加入不会进行选举,而是直接成为follower—— 仔细观察 一台zk无法集群,没有leader

服务器运行时期选举(这个与原子广播很重要)

zookeeper运行期间,leader与非leader服务器各司其职,即使当有非leader服务器宕机或者新加入,此时也不会影响leader,但是一旦leader服务器挂了,那么整个集群将暂停对外服务,进入新一轮leader选举,其过程和启动时期的leader选举过程基本一致

假设正在运行的有server1server2server3三台服务器,当前leaderserver2,若某一时刻leader挂了,此时便开始Leader选举。选举过程如下

  1. 变更状态。leader挂后,余下的服务器都会将自己的服务器状态变更为looking,然后开始进入leader选举过程

  2. 每个server发出一个投票。在运行期间,每个服务器上的zxid可能不同,此时假定server1zxid122server3zxid122在第一轮投票中,server1和server3都会投自己,产生投票(1,122),(3,122),然后各自将投票发送给集群中所有机器

  3. 接收来自各个服务器的投票。与启动时过程相同

  4. 处理投票。与启动时过程相同,此时,server3将会成为leader

  5. 统计投票。与启动时过程相同

  6. 改变服务器的状态。与启动时过程相同

10、zookeeper的leader选举的更多相关文章

  1. 【分布式】Zookeeper的Leader选举

    一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...

  2. Zookeeper系列(十一)zookeeper的Leader选举详解(核心之一)

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6107600.html尊重原创,奇文共欣赏: 一.前言 前 ...

  3. 【分布式】Zookeeper的Leader选举-选举过程介绍(经典的Paxos算法解析)

    一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...

  4. 简单理解Zookeeper的Leader选举【转】

    Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...

  5. zookeeper应用 - leader选举 锁

    模拟leader选举: 1.zookeeper服务器上有一个/leader节点 2.在/leader节点下创建短暂顺序节点/leader/lock-xxxxxxx 3.获取/leader的所有子节点并 ...

  6. 简单理解Zookeeper的Leader选举

    Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...

  7. 面试官:说一说Zookeeper中Leader选举机制

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...

  8. Zookeeper之Leader选举过程

    Leader在集群中是一个非常重要的角色,负责了整个事务的处理和调度,保证分布式数据一致性的关键所在.既然Leader在ZooKeeper集群中这么重要所以一定要保证集群在任何时候都有且仅有一个Lea ...

  9. zookeeper进行leader选举

    一.如何进行leader选举 创建 /lj/producer和/lj/master/producer外层节点 创建临时顺序节点 判断自己是否是master节点(判断流程:遍历/lj/producer节 ...

  10. zookeeper的leader选举机制个人总结

    第一步:每个服务器都首先投自己,格式为<sid,zxid>: 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自 ...

随机推荐

  1. 设计模式学习-使用go实现责任链模式

    责任链模式 定义 优点 缺点 适用范围 代码实现 责任链模式对比装饰模式 参考 责任链模式 定义 责任链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免请求 ...

  2. requests模块的高级应用

    requests抓取数据报错 - HttpConnectinPool: - 原因: - 1.短时间内发起了高频的请求导致ip被禁 - 2.http连接池中的连接资源被耗尽 - 解决: - 1.代理 - ...

  3. 【链表】链表OJ-力扣2074. 反转偶数长度组的节点【超详细的算法解释】

    说在前面 今天博主给大家带来的是力扣上的一道链表OJ,完成这道题后,博主感觉这题覆盖了很多链表的解题思想,另外,这道题对指针的控制也是比较高的.在这里博主将这道好题分享给大家! 另外,对于链表等数据结 ...

  4. P9474 [yLOI2022] 长安幻世绘题解

    题目链接: [yLOI2022] 长安幻世绘 比较不错的综合题.考虑下处理极差的绝对值我们应该怎么做,很显然排序是有必要的,我们需要带着下标排序. 考虑几个核心点: 1.假如没有其他限制考虑极差与序列 ...

  5. Python - 将RTF文件转为Word 、PDF、HTML格式

    RTF也称富文本格式,是一种具有良好兼容性的文档格式,可以在不同的操作系统和应用程序之间进行交换和共享.有时出于不同项目的需求,我们可能需要将RTF文件转为其他格式.本文将介如何通过简单的Python ...

  6. C语言程序设计之 循环控制2020-10-20

    2020-10-20 整理: 第一题: 2011年开始实行新个人所得税法,要求输入月薪salary,输出应交的个人所得税 tax (保留两位小数). 新税法方案如下: tax=rate*(salary ...

  7. 基于Doris构建亿级数据实时数据分析系统

    转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南 背景 随着公司业务快速发展,对业务数据进行增长分析的需求越来越迫切,与此同时我们的业务数据量也在快速激增.每 ...

  8. Sigrok逻辑分析仪软件(基于CY7C68013A)

    关于逻辑分析仪 逻辑分析仪在调试数字电路时是非常重要的工具. 其形式与示波器类似, 采集被检测信号的电平, 并绘制时序图进行分析. 逻辑分析仪和示波器的区别: 数字量和模拟量: 示波器采集的是模拟量, ...

  9. 【OpenGL ES】EGL+FBO离屏渲染

    1 前言 ​ FBO离屏渲染 中使用 GLSurfaceView 来驱动 Renderer 渲染图片,为了隐藏 GLSurfaceView,将其设置为透明的,并且宽高都设置为1.本文将使用 EGL 代 ...

  10. 【OpenGL ES】MVP矩阵变换

    1 前言 ​ 本文主要介绍 MVP 矩阵变换,其本质是线性变换,应用见→绘制立方体. Model:模型变换,施加在模型上的空间变换,包含平移变换(translateM).旋转变换(rotateM).对 ...