每个节点启动的时候状态都是LOOKING,处于观望状态,接下来就开始进行选主流程

若进行Leader选举,则至少需要两台机器,这里选取3台机器组成的服务器集群为例。在集群初始化阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Leader,于是进入Leader选举过程。选举过程如下

(1) 每个Server发出一个投票。由于是初始情况,Server1和Server2都会将自己作为Leader服务器来进行投票,每次投票会包含所推举的服务器的myid和ZXID、epoch,使用(myid, ZXID,epoch)来表示,此时Server1的投票为(1, 0),Server2的投票为(2, 0),然后各自将这个投票发给集群中其他机器。

(2) 接受来自各个服务器的投票。集群的每个服务器收到投票后,首先判断该投票的有效性,如检查是否是本轮投票(epoch)、是否来自LOOKING状态的服务器。

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

i. 优先比较epoch

ii. 其次检查ZXID。ZXID比较大的服务器优先作为Leader

iii. 如果ZXID相同,那么就比较myid。myid较大的服务器作为Leader服务器。

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

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

(5) 改变服务器状态。一旦确定了Leader,每个服务器就会更新自己的状态,如果是Follower,那么就变更为FOLLOWING,如果是Leader,就变更为LEADING。

服务器启动时的leader选举相关推荐

  1. 启动服务器如何删除文件,在服务器启动时用Filter来删除某种类型的文件

    简介这篇文章主要介绍了在服务器启动时用Filter来删除某种类型的文件以及相关的经验技巧,文章约1303字,浏览量409,点赞数3,值得参考! 代码: import java.io.File; imp ...

  2. spring boot所打的jar在服务器启动时,日志打印时间、jar所使用时间和系统当前时间不一致

    1.spring boot所打的jar在服务器启动时,日志打印时间.jar所使用时间和系统当前时间不一致 1)系统时间 2)日志打印时间 2.解决方法 在启动的时间添加-Duser.timezone= ...

  3. 服务器启动时Webapp的web.xml中配置的加载顺序

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  4. 服务器启动时创建文件夹,技术|entr:文件更改时重新运行构建

    这是一篇简短的文章.我是最近才发现 entr 的,我很惊奇从来没有人告诉过我?!因此,如果你和我一样,那么我告诉你它是什么. entr 的网站上对它已经有很好的解释,也有很多示例. 总结在其头部:en ...

  5. 打开北京地税未能检测到服务器,启动时显示:检测公共组件login.dll时未能通过,公共组件可能被破坏。怎么解决这个问题,谢谢!...

    解决用友T3格式与数据的切换,关键字里的录入是灰化解决用友T3格式与数据的切换,关键字里的录入是灰化 用友T3格式与数据的切换,关键字里的录入是灰化.碰到这种问题,怎么办?首先,我们在碰到这种情况下, ...

  6. d 服务器运行失败,【求助】服务器启动失败,服务器启动时遇到了一些麻烦,请重试...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [00:02:10]: Not applying level data overrides. [00:02:10]: Not applying world ...

  7. leader选举的原理

    接下来再我们基于源码来分析leader选举的整个实现过程. leader选举存在与两个阶段中,一个是服务器启动时的leader选举. 另一个是运行过程中leader节点宕机导致的leader选举 : ...

  8. Zookeeper之Leader选举源码分析

    Zookeeper源码下载地址:https://github.com/apache/zookeeper 1.选举流程 Zookeeeper的Leader选举会分两个过程. 服务启动时的leader选举 ...

  9. zookeeper专题:zookeeper集群模式下,leader选举流程分析

    文章目录 Zookeeper 集群模式一共有三种类型的角色 1. zookeeper启动时leader选举流程 1.1 加载配置文件,设置基本信息 1.2 指定快速选举算法,启动多级队列.线程 1.3 ...

最新文章

  1. Java洛谷P1149 火柴棒等式
  2. 【学习笔记】13、标准数据类型—元组
  3. mysql为什么表大了要重建_为什么MySQL分库分表后总存储大小变大了?
  4. 新建Exchange服务器 Outlook端收发邮件报错:0x80040201
  5. redis -cli command not found_记一次 Linux 服务器 redis 漏洞分析
  6. mybatis.net - 5 嵌入资源与引用资源
  7. C语言入门水题总结2
  8. 欧姆字符的编码c语言,《编码:隐匿在计算机软硬件背后的语言》读书笔记
  9. jenkins的简介与安装
  10. UVA10079 Pizza Cutting
  11. delete table 和 truncate table
  12. 为什么戏说php,PHP语言之戏说PHP框架的味道
  13. 手机写代码 termux
  14. quartz定时任务properties
  15. 曲苑杂坛--查看CPU配置
  16. Day20 网络编程
  17. systemd 中的requires, wants, before, after
  18. 快速幂取余算法总结详解
  19. ionic loading(加载动作)
  20. 机器学习笔试精选 100 题

热门文章

  1. 组态王6.55连接MySql数据库(笔记)
  2. Photoshop CS5完全自学实战实例视频教程
  3. 这是我在网上安的第一个窝!
  4. mysql索引背后的数据结构及算法
  5. PLSQL Developer使用大全
  6. loadrunner录制脚本,页面无法显示
  7. [SoapUI] 在Test Step 下加Script Assertion,用 messageExchange 获取当前步骤的response content...
  8. 关于wordpress中更换CKEditor编辑器
  9. [转载]DB2数据库移植罕见成绩片面理睬(4)
  10. Python 的文件IO相关操作说明