面试官:说一说Zookeeper中Leader选举机制

此时进来了三个小姐姐,大姐美丽端庄,暂且叫她大端庄吧,二姐闭月羞花,暂且叫她二羞花吧,三姐国色天香,暂且叫她三天香吧。

我:我现在给你们每个人一个选票,上面可以写两个数,第一个数代表你们自己,每个人的都不一样,你们第一个数就按照1、2、3来吧。第二个数你们可以随便填写。

这时大端庄写的是(1,0),二羞花写的是(2,0),三天香写的是(3,0)

这个时候我们假如先启动两个节点,一个是大姐,一个是二姐。

这个时候大姐把手里的票发送一个副本给二姐,二姐把手里的票也发送一个副本给大姐。

在这里插入图片描述

这个时候大姐用二姐发给自己的票和自己手里的票比较,先比较后一位,如果对方比自己的大,那么就丢弃自己的票,而保留对方的票,如果对方比自己的小而丢弃对方的票而保留自己的,如果相等就比较第一位数,如果两位数都相等则两个票都保留。

大姐是(1,0),二姐是(2,0),最后一位都相等,则比较第一位,第一位二姐是2大于大姐的1,所以大姐丢弃自己原来的票据,而保存二姐发过来的票据。

在这里插入图片描述

由于二姐的票比大姐的大,所以二姐自己的票不用丢弃,丢弃大姐给的副本就好。

这个时候双方再次相互发送票据。

在这里插入图片描述

这个时候由于双方票据大小都一样,则不仅保存自己的票据还要保存对方发送的副本票据,此时两个人的票据情况如下。

在这里插入图片描述

这个时候由于每个人所持有的票数大于总节点的一半(这里只有大姐、二姐两个节点,所以总节点是2)这里就确定了leader应该是(2,0)对应的节点,也就是二姐是leader。

面试官:那小三呢,三姐天香还没有启动呢

我:别急,现在三姐天香启动后发现已经选举出leader了,所以三姐天香就直接将自己变为follower角色。

面试官:嗯,我明白你的意思,那你能最后总结一下比较那里是怎么比较的吗,我有点晕

我:好的,比较那里只有三种情况,一种是自己大于对方,第二种是对方大于自己,第三种是两人相等。

自己大于对方:将对方发过来的票扔掉,保存自己的票。

对方大于自己:将自己的票扔掉,保存对方的票。

两人相等:将自己和对方发过来的票都保存。

面试官:嗯,那我要是想当leader就直接把票改大一点不就行了,票里的数据怎么来的呢?

我:票里两个数一个是myid,一个是zxid,myid是节点的唯一标识,在启动节点之前需要配置好,而zxid在数据修改后会增加,zxid越大证明这个节点里的数据越新。

在这里插入图片描述

面试官:哦,那意思就是节点数据越新的就最有资格当leader呗

我:是这样的。。。

面试官:小伙子真厉害啊,我这边没有什么要问的了,你还有什么问题要问我的吗

我:额。。。那三个小姐姐的微信你有吗?

面试官:咳,只要你来,别说三个了,就是三百个也不在话下

我:那现在去办理入职吧。。。

面试官:别急呀,你得先去体检,证明你可以的哦。。。

我:那我肯定没有问题呀。

面试官:你还有其他同学吗,给我推荐几个

我:有,跟我一起学习小奇趣学编程系列的有不少人,我都给你介绍过来吧。

面试官:好啊,我这里正缺人呢。。。

我:那我先去体检了啊,记着我的三百个。。。

四、总结

==================================================================

这里关于zookeeper还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】阅读更多的好文章,获取我为大家准备的资料。

本文转自 https://xiaoqijava.blog.csdn.net/article/details/123997316,如有侵权,请联系删除。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值