面试官:说一说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还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
如果觉得我的文章还不错的话就点个赞吧
面试官:说一说Zookeeper中Leader选举机制的更多相关文章
- Zookeeper中的选举机制
Zookeeper虽然在配置文件中并没有指定master和slave,但是,zookeeper工作时,是有一个节点为leader,其他则为follower.leader是通过内部的选举机制临时产生的. ...
- zookeeper的leader选举机制个人总结
第一步:每个服务器都首先投自己,格式为<sid,zxid>: 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自 ...
- Zookeeper中的watcher监听和leader选举机制
watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...
- 【分布式】Zookeeper的Leader选举
一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...
- 简单理解Zookeeper的Leader选举【转】
Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...
- zookeeper leader选举机制
最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 public enum ServerState { LOOKING ...
- zookeeper应用 - leader选举 锁
模拟leader选举: 1.zookeeper服务器上有一个/leader节点 2.在/leader节点下创建短暂顺序节点/leader/lock-xxxxxxx 3.获取/leader的所有子节点并 ...
- Zookeeper系列(十一)zookeeper的Leader选举详解(核心之一)
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6107600.html尊重原创,奇文共欣赏: 一.前言 前 ...
- 【分布式】Zookeeper的Leader选举-选举过程介绍(经典的Paxos算法解析)
一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...
随机推荐
- CF1534F1题解
首先,对于一个在第 \(i\) 行 \(j\) 列的沙子,如果他开始下降,他能够使哪些沙子下降呢? 很容易得知是第 \(j-1,j,j+1\) 列所有行号不小于 \(i\) 的沙子. 对于沙子 \(u ...
- 5分钟了解Redis的内部实现快速列表(quicklist)
快速列表简介 在Redis3 .2版本之前,存储列表(list)数据结构使用的是压缩列表(ziplist)和链表(linkedlist),当列表元素个数比较少并且每个元素占用空间比较小的时候,使用压缩 ...
- C++设计模式 - 状态模式(State)
状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 Sta ...
- 无法更新apt镜像源?树莓派安装最新版Debian11(bullseye)arm64位系统步骤
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 树莓派系统在2022年1月28日迎来了更新,更新了64位的系统,同时也有lite系统供我们使用.32位系统很多软件都用不了,特别是宝塔面板.下面是安 ...
- oracle报ORA-12154
环境 [oracle@oracle admin]$ sqlplus -vSQL*Plus: Release 19.0.0.0.0 - Production Version 19.3.0.0.0 问题描 ...
- python练习册 每天一个小程序 第0006题
1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都 ...
- 第3 章 802.11 MAC
一 前言 802.11 规格的关键在于MAC(介质访问控制层),属于数据链路层,它定义了数据帧怎样在介质上进行传输.MAC 位于各种物理层之上,控制数据的传输.不同的物理层可以提供不同的传输速度,不过 ...
- K8S原来如此简单(七)存储
emptyDir临时卷 有些应用程序需要额外的存储,但并不关心数据在重启后仍然可用. 例如,缓存服务经常受限于内存大小,将不常用的数据转移到比内存慢.但对总体性能的影响很小的存储中. 再例如,有些应用 ...
- 如何巧妙使用vim处理文件
一系列流程书写如何用vim巧妙处理文件 1. 创建两个待处理的文件 root@ubuntu:/home/watson/real-watson# touch left right 2. 简单增补文件内容 ...
- Windows&Linux文件传输方式总结
在渗透过程中,通常会需要向目标主机传送一些文件,来达到权限提升.权限维持等目的,本篇文章主要介绍一些windows和Linux下常用的文件传输方式. Windows 利用FTP协议上传 在本地或者VP ...