博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZooKeeper 选举机制
阅读量:5924 次
发布时间:2019-06-19

本文共 1158 字,大约阅读时间需要 3 分钟。

ookeeper 默认的算法是 FastLeaderElection,采用投票数大于半数则胜出的逻辑。

6.1 . 概念
服务器 ID
比如有三台服务器,编号分别是 1,2,3。编号越大在选择算法中的权重越大。
选举状态
LOOKING,竞选状态。
FOLLOWING,随从状态,同步 leader 状态,参与投票。
OBSERVING,观察状态,同步 leader 状态,不参与投票。LEADING,领导者状态。
数据 ID
服务器中存放的最新数据 version。
值越大说明数据越新,在选举算法中数据越新权重越大。逻辑时钟
也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比, 根据不同的值做出不同的判断。

6.2 . 全新集群选举

假设目前有 5 台服务器,每台服务器均没有数据,它们的编号分别是
1,2,3,4,5,按编号依次启动,它们的选择举过程如下:
l 服务器 1 启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器 1 的状态一直属于 Looking。
l 服务器 2 启动,给自己投票,同时与之前启动的服务器 1 交换结果,由于服务器 2 的编号大所以服务器 2 胜出,但此时投票数没有大于半数, 所以两个服务器的状态依然是 LOOKING。
l 服务器 3 启动,给自己投票,同时与之前启动的服务器 1,2 交换信息, 由于服务器 3 的编号最大所以服务器 3 胜出,此时投票数正好大于半数, 所以服务器 3 成为领导者,服务器 1,2 成为小弟。
l 服务器 4 启动,给自己投票,同时与之前启动的服务器 1,2,3 交换信息, 尽管服务器 4 的编号大,但之前服务器 3 已经胜出,所以服务器 4 只能成为小弟。
l 服务器 5 启动,后面的逻辑同服务器 4 成为小弟。
6.3 . 非全新集群选举
对于运行正常的 zookeeper 集群,中途有机器 down 掉,需要重新选举时, 选举过程就需要加入数据 ID、服务器 ID 和逻辑时钟。
数据 ID:数据新的 version 就大,数据每次更新都会更新 version。服务器 ID:就是我们配置的 myid 中的值,每个机器一个。
逻辑时钟:这个值从 0 开始递增,每次选举对应一个值。 如果在同一次选举中,这个值是一致的。
这样选举的标准就变成:
1、逻辑时钟小的选举结果被忽略,重新投票;
2、统一逻辑时钟后,数据 id 大的胜出;
3、数据 id 相同的情况下,服务器 id 大的胜出; 根据这个规则选出 leader。

转载于:https://blog.51cto.com/13587708/2306466

你可能感兴趣的文章
智能家居渐成趋势 如何正确理解它
查看>>
“三网”竞合升温 智能家居入口泛化
查看>>
全新WiFi技术问世 功率更低穿墙性能更强
查看>>
台积电 2 月份业绩度小月,营收月减 6.8%
查看>>
联想看好印度巴西市场 能弥补中国市场下滑影响
查看>>
《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——第3章 数据安全工具DRBD、extundelete 3.1 数据镜像软件DRBD介绍...
查看>>
最新的黑客大杀器:Google Dorking
查看>>
中国移动再启大规模光缆集采:产业界喜迎大蛋糕
查看>>
竞争抄袭? 如何占领SaaS产品市场
查看>>
世界最大OpenStack私有云是如何运营的
查看>>
全球物联网专利竞争态势分析
查看>>
《网络安全法》为大数据保驾护航
查看>>
微软Edge浏览器开始支持WebVR
查看>>
QDialog之屏蔽Esc键
查看>>
CSS3之创建透明边框三角
查看>>
Android 多媒体库新漏洞 2.75亿部设备受影响
查看>>
《I'm a Mac:雄狮训练手册》——0.2 OS X
查看>>
《Splunk智能运维实战》——1.8 定义字段提取内容
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——2.8 SCTP关联的建立和终止...
查看>>
前甲骨文 Linux 部门主管加入微软
查看>>