• 第一步:每个服务器都首先投自己,格式为<sid,zxid>;
    • 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自己之外的所有服务器的投票信息;
    • 第三步:自己跟其他服务器的投票信息作对比,然后每个服务器再次选出一个leader。对比规则如下:
      1)优先对比zxid,谁的zxid最高就投给谁(因为zxid越大,代表该服务器的数据越新,越全);
      2)如果zxid相同,则谁的sid大就投谁。
    • 最后:统计票数,被支持票数超过一半的服务器成为新的leader。
    • 举例如下:
      共有5台zookeeper服务器,分别为s1,s2,s3,s4,s5,对应的<sid,zxid>分别为s1<1,8> s2<2,8> s3<3,9> s4<4,9> s5<5,8>
      a.则第一轮投票,每个服务器都投自己;
      b.第二轮投票,每个服务器接受到的票数分别如下:
      s1:<1,8>,<2,8>,<3,9>,<4,9>,<5,8>,根据对比规则:zxid为9的先被推举为leader,则s3,s4被选;其次,zxid相同下,sid大者胜出,所以最终s4为leader;
      s2:<2,8>,<1,8>,<3,9>,<4,9>,<5,8>,同理,s4被选为leader;
      s3:<3,9>,<1,8>,<2,8>,<4,9>,<5,8>,同理,s4被选为leader;
      到目前为止,已经有3个服务器,超过半数推举s4为leader,所以结束本次选举,最终leader为s4;

zookeeper的leader选举机制个人总结的更多相关文章

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

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

  2. zookeeper leader选举机制

    最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 public enum ServerState { LOOKING ...

  3. Zookeeper中的watcher监听和leader选举机制

    watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...

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

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

  5. 温故知新-快速理解zookeeper功能&应用&选举机制

    文章目录 zookeeper简介 什么是zookeeper zookeeper应用场景 zookeeper特点 zookeeper的角色 zookeeper的数据模型 节点数据结构 节点类型 zook ...

  6. 简单理解Zookeeper的Leader选举

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

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

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

  8. zookeeper应用 - leader选举 锁

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

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

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

随机推荐

  1. 个人永久性免费-Excel催化剂功能第40波-工资、年终奖个人所得税计算函数

    学Excel的表哥表姐们必定有接触过个人所得税的案例学习,在计算个人所得税这个需求上,大家的层次也是很多种多样,当然Excel催化剂推荐的方式仍然是经过封装后的简单明了的自定义函数的方式,此篇已为财务 ...

  2. c语言进阶10-算法

    一.  数据结构和算法关系 为什么要学数据结构和算法? 通常,计算机解决问题的步骤如下: 在数学模型中,计算机处理的对象之间通常存在着一种最简单的线性关系,这类数学模型就是线性的数据结构.著名计算机科 ...

  3. 实现简单的 IOC 和 AOP

    1 简单的 IOC 1.1 简单的 IOC 容器实现的步骤 加载 xml 配置文件,遍历其中的标签 获取标签中的 id 和 class 属性,加载 class 属性对应的类,并创建 bean 遍历标签 ...

  4. 小白学python-day06-

    今天是day06,以下是学习内容总结: 但行努力,莫问前程. --------------------------------------------------------------------- ...

  5. 段落超出div部分隐藏显示

    overflow: hidden; white-space: nowrap; text-overflow: ellipsis;

  6. typescript 公共,私有与受保护的修饰符

    public理解 当你在程序中没有指明修饰符时,默认为public,也就是在类内类外都可以访问,我们以下面的例子来解释. class Person{ name:string sex:string ag ...

  7. PHP7安装mysql扩展

    1.下载mysql扩展 http://git.php.net/?p=pecl/database/mysql.git;a=summary 2.解压后并使用phpize工具初始化(phpize一般在php ...

  8. 19个心得,明明白白说Linux下的负载均衡

    一.目前网站架构一般分成负载均衡层.web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs.DRDB+Heart ...

  9. 两份简单的logstash配置

    input{http{port=>7474}} filter{ grok{ match =>{ #"message" => "%{COMBINEDAPA ...

  10. Java课堂 动手动脑5

    1.了解棋盘打印:利用二维数组输出一个15*15的棋盘,棋盘的原素为“+”,就是输出一个横纵都是15个“+”的二维数组,然后再以坐标形式输入棋子“●”,替换掉原来棋盘里的“+”.再编写代码. 电脑随机 ...