zookeeper选举机制简介说明

宫欣彤 zookeeper 发布时间:2022-06-13 14:14:31 阅读数:10385 1
集群节点中状态
leader:领导者
    master主节点 

follower:跟随者
    从节点slave

observer:观察者
    特殊的从节点
    不参与主节点选举
    只提供读操作

looking:是一个临时状态
    在集群选举master过程中
    所有的follower节点都会去竞选master

集群中必须有主节点,否则无法正常工作 

所以在没有主节点时就会发生选举
以下三条是一些概念:
 1.Server id:服务器ID
 2.Zxid:事务ID
 3.Epoch:逻辑时钟 

2.集群中的选举机制

 谁的票数多,谁就是老大,就是主节点。

3.什么情况下需要进行选举

1.集群中的从节点数量不足以通过半数校验,主节点会自己挂掉,选举新的主节点
假如有5台服务器,主节点可以收到5张票,假如有3个slaver挂了,就剩一个主节点,一个从节点,测试选举没有超过一半,则master 自杀

2.集群启动时,需要进行主节点的选举(五台机器)
   每个节点都有自己携带的唯一id

1.启动第一台机器1,发起选举,自己投票给自己,票数不过半,选举失败,服务器1保持looking状态。
2.启动第二台机器2,发起选举,1和2都先给自己投一票,1发现2 比自己的id大,所以把自己的票也投给服务器2,此时服务器2有2票,服务器1有0票,票数不过半,选举失败。
  服务器1,2均保持looking 状态
3.启动第三台机器3,发起选举,1,2,3都先给自己投上一票,但是1和2发现服务器3的id比自己大,所以把自己的票都投给服务器3,次数服务器3票数过半,选举成功,服务器3当选leader
  服务器1,2变为follower,服务器3变为leader.
  此时已经选举成功了,后面两台机器的选举不会改变结果
4.启动第四台机器
  发起一次选举,此时服务器1,2,3是folllower 状态,不会更改选票信息
   此时:服务器3为3票,服务器4为1票。服务器4少数服从多数,更改选票信息为服务器3。
 服务器4更改状态为follower
5.启动第五台机器
  与服务器4一样投票给3,此时服务器3一共5票,服务器5为0票。
 服务器5更改状态为follower

3.集群正常启动,leader因为故障停止服务

此情景中每个节点都有自己的myid和zxid,选举规则就是谁的数据最新鲜,其他人就会投票给他
zxid是事务id,事务id越大,代表数据越大,代表当前节点存储的数据越新
1.第一次投票都会投给自己
2.然后每台机器都会把自己的票发给其他机器,如果发现了其他机器的zxid比自己大,将会重新投票,并都会投给xzid最大的那台机器。此后,zxid最大的服务器就会当选为leader。

4.加入了新的follower

此时发生选举并不会影响主节点的改变 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/zookeeper/2022/3710.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者