• 第一步:每个服务器都首先投自己,格式为<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;

最新文章

  1. 如何决定DCOM是否可用
  2. zabbix 3.0 安装 ubuntu环境
  3. (旧)子数涵数&#183;Flash——Flash Player的操作命令
  4. jquery easyui datagrid字段绑定问题
  5. Swift入门篇-Hello World
  6. 转:如何查看linux版本 如何查看LINUX是多少位
  7. PAT1005
  8. 3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
  9. Vulkan Tutorial 05 逻辑设备与队列
  10. iOS 工程自动化 - 思路整理
  11. admin的配置
  12. mysql优化二之锁机制
  13. TypeScript 基础知识点整理
  14. redis快照持久化和aof日志持久化
  15. 翻译 | Improving Distributional Similarity with Lessons Learned from Word Embeddings
  16. Hbase数据库
  17. oracle中rownum的使用
  18. threding模块的其他用法
  19. 解决Intellij IDEA中console窗口中文乱码的问题
  20. vue之路由嵌套,子路由

热门文章

  1. 个人永久性免费-Excel催化剂功能第98波-零代码零距离轻松接触并拥有金融大数据
  2. Android使用webService(发送xml数据的方式,不使用jar包)
  3. 代码中批量执行Oracle SQL语句
  4. 给hexo添加宠物
  5. 解决Windows10下安装Ubuntu16.04双系统后开机没有Ubuntu引导
  6. mybatis01-1测试
  7. 1.4.3 ID遍历爬虫(每天一更)
  8. Lombok 使用介绍(常见注解)
  9. 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这
  10. (转)Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)