3

面试官:说一说Zookeeper中Leader选举机制 - 旷世奇才927

 2 years ago
source link: https://www.cnblogs.com/xiaoqiJava/p/16110490.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新

今天又是一个阳光明媚的一天,我又怀着沉重的心情踏上了面试的道路,有时我就在怀疑自己,自己是不是不适合程序员这个职业,难道真的要去做段子手。。。

不知不觉的走到了要面试公司的楼下,兴奋又期待的拨通了hr的电话,多希望她会说一句:上来吧,给你留门了。。。

在这里插入图片描述

遗憾的是并没有给我留门,不过没关系,我已经记住门牌号了,我可以半夜爬你家窗户。。。

进来后hr小姐姐让我在会议室里稍作等待,等了一会后进来一个身材魁梧、一米八五的壮汉,我心想这应该就是面试官吧,这次看着不好惹啊,我这次还是收敛点吧,但是我看他戴着一个黑色墨镜,我心想难道他是。。。

面试官:小奇是吧,先做一个自我介绍吧

我:您是盲人?

面试官:不是啊,怎么这么问呢?

我:不是盲人你手里拿着我的简历怎么还让我介绍呢?

面试官:不是,这是流程懂不懂,在你介绍的过程中我可以好好看看你的简历

我:(我站起来夺过了面试官手中的简历扔到了地上)不用看我的简历了,你就记住两个字,精通就完了。

在这里插入图片描述

面试官:(面试官瑟瑟发抖)什么都精通?

我:那必须的。

三、Zookeeper中Leader选举机制

面试官:那你说一说zookeeper中leader选举机制吧

我:给我上三个小姐姐。。。

面试官:大哥,你是来面试的,这里不是足浴店。。。

在这里插入图片描述

我:我知道,我让他们三个模仿zookeeper节点,来带你生动形象的了解一下zookeeper是怎么选举的。

面试官:那好吧,这确实是一个不错的理由,以后我就可以随便。。。

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

我:我现在给你们每个人一个选票,上面可以写两个数,第一个数代表你们自己,每个人的都不一样,你们第一个数就按照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还没有整理完毕,文章后面持续更新,建议收藏。

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

如果觉得我的文章还不错的话就点个赞吧


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK