服务器启动时的leader选举
每个节点启动的时候状态都是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选举相关推荐
- 启动服务器如何删除文件,在服务器启动时用Filter来删除某种类型的文件
简介这篇文章主要介绍了在服务器启动时用Filter来删除某种类型的文件以及相关的经验技巧,文章约1303字,浏览量409,点赞数3,值得参考! 代码: import java.io.File; imp ...
- spring boot所打的jar在服务器启动时,日志打印时间、jar所使用时间和系统当前时间不一致
1.spring boot所打的jar在服务器启动时,日志打印时间.jar所使用时间和系统当前时间不一致 1)系统时间 2)日志打印时间 2.解决方法 在启动的时间添加-Duser.timezone= ...
- 服务器启动时Webapp的web.xml中配置的加载顺序
一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...
- 服务器启动时创建文件夹,技术|entr:文件更改时重新运行构建
这是一篇简短的文章.我是最近才发现 entr 的,我很惊奇从来没有人告诉过我?!因此,如果你和我一样,那么我告诉你它是什么. entr 的网站上对它已经有很好的解释,也有很多示例. 总结在其头部:en ...
- 打开北京地税未能检测到服务器,启动时显示:检测公共组件login.dll时未能通过,公共组件可能被破坏。怎么解决这个问题,谢谢!...
解决用友T3格式与数据的切换,关键字里的录入是灰化解决用友T3格式与数据的切换,关键字里的录入是灰化 用友T3格式与数据的切换,关键字里的录入是灰化.碰到这种问题,怎么办?首先,我们在碰到这种情况下, ...
- d 服务器运行失败,【求助】服务器启动失败,服务器启动时遇到了一些麻烦,请重试...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [00:02:10]: Not applying level data overrides. [00:02:10]: Not applying world ...
- leader选举的原理
接下来再我们基于源码来分析leader选举的整个实现过程. leader选举存在与两个阶段中,一个是服务器启动时的leader选举. 另一个是运行过程中leader节点宕机导致的leader选举 : ...
- Zookeeper之Leader选举源码分析
Zookeeper源码下载地址:https://github.com/apache/zookeeper 1.选举流程 Zookeeeper的Leader选举会分两个过程. 服务启动时的leader选举 ...
- zookeeper专题:zookeeper集群模式下,leader选举流程分析
文章目录 Zookeeper 集群模式一共有三种类型的角色 1. zookeeper启动时leader选举流程 1.1 加载配置文件,设置基本信息 1.2 指定快速选举算法,启动多级队列.线程 1.3 ...
最新文章
- Java洛谷P1149 火柴棒等式
- 【学习笔记】13、标准数据类型—元组
- mysql为什么表大了要重建_为什么MySQL分库分表后总存储大小变大了?
- 新建Exchange服务器 Outlook端收发邮件报错:0x80040201
- redis -cli command not found_记一次 Linux 服务器 redis 漏洞分析
- mybatis.net - 5 嵌入资源与引用资源
- C语言入门水题总结2
- 欧姆字符的编码c语言,《编码:隐匿在计算机软硬件背后的语言》读书笔记
- jenkins的简介与安装
- UVA10079 Pizza Cutting
- delete table 和 truncate table
- 为什么戏说php,PHP语言之戏说PHP框架的味道
- 手机写代码 termux
- quartz定时任务properties
- 曲苑杂坛--查看CPU配置
- Day20 网络编程
- systemd 中的requires, wants, before, after
- 快速幂取余算法总结详解
- ionic loading(加载动作)
- 机器学习笔试精选 100 题
热门文章
- 组态王6.55连接MySql数据库(笔记)
- Photoshop CS5完全自学实战实例视频教程
- 这是我在网上安的第一个窝!
- mysql索引背后的数据结构及算法
- PLSQL Developer使用大全
- loadrunner录制脚本,页面无法显示
- [SoapUI] 在Test Step 下加Script Assertion,用 messageExchange 获取当前步骤的response content...
- 关于wordpress中更换CKEditor编辑器
- [转载]DB2数据库移植罕见成绩片面理睬(4)
- Python 的文件IO相关操作说明