00:00
好,接下来呢,给大家详细的讲解一下leader的一个选举流程啊,我们先来看一下对应的原理啊,双击打开。首先呢,还是对应的主K班集群和下面的卡法集群。那么卡不卡啊?每启动一个节点,就会在主课包当中注册一个节点信息。那下面呢,就开始选择对应的这个controller,那么每一个博客节点都有对应的一个controller,那到底选择谁作为日后的一个leader选举的老大呢?那这里面他们就会争先去抢占对应的这个节点,诶,跟他进行一个注册,谁先能注册到,那谁就是日后的一个controller leader好。那假如说现在呢,是博克零抢到了,抢到之后他第一时间会监控对应的这个博斯ID斯对应的节点变化,这里面有任何的一个变化信息,我都能够快速的捕捉到,好。那假设呢,诶这个他监听完毕之后。那下面呢,我们来看一下它真正的一个选举策略啊,选举策略是按照这个说在isr中存活为前提,你必须得先在isr里面活着,接下来呢,是按照AR中排在前面的优先啊,就是副本优先原则啊,那假如说R呢是102 isr是102,那这样那首先检测一下102啊,呃,那这里面就是说这三台机器都有条件成为leader,那到底谁能成为真正的leader呢?那就看一下AR中排在前面的。
01:32
那排在前面的就是一吗?哎,那一呢,就是第一个会成为leader,好,那如果一挂了呢,一挂了之后。那么它这里面SR也会退掉,那我们就会选择哎零哎零就会上位,零再挂了,那就是二进行一个上位啊。行,那下面呢,我们假设啊,选出来对应的一个leader了,好。那么这个CTRLL就会把对应的这个信息传到这个主key包当中来进行一个备份,方便什么呢?方便万一它挂了,那其他节点就可以从这儿拉取到对应的信息,哎,而且可以快速的一个上位哈。
02:09
行,那下面呢,来看一下,假如说啊,这个BROKE1这个leader挂了,他挂了之后,那就会触发这个节点上咔掉了,那也就从这个ID丝里面下来,那下来之后,那么这里面博壳是不是已经监控这个节点变化,他一监控咔哎就捕捉到了,捕捉到了变化,那他要干什么事呢。他首先啊,会从这个主K班当中快速的再拉取一下对应的is SR和leader信息,诶拉过来,因为它不存储任何信息啊,那他拉过来之后,他就按照选举规则进行新一轮的选举,那首先呢,是在SR队列里面存活为前提,那记住这个一啊,哎,它会给它过滤掉哈,你这里面一不存在,它会过滤掉。接下来会按照IR中排在前面的优先进行一个选举啊,那下一位呢,就是这个零嘛,一挂掉之后零进行一个上位啊。
03:04
那么他挂掉对吧,更新SR,同时呢,这个leader他上位了啊,这就是整个这个选举的一个过程,好,那下面呢,我们来干一件什么事呢?来验证一下是不是这样的哈,那比如说我们这里面先创建一个topic,哎,四个分区,四个副本啊这样一个节点,那我们来操作一下呗。那你先验证一下你的集群得启动了啊,现在呢,这是三台启动,然后它,哎四台节点全部启动,启动之后,那我们来到这儿。创建一个topic杠杠。不。Stop。啊,Server。HIOP1029092好,然后呢,杠杠,Create创建嘛,杠杠。Topic,我们创建一个艾特硅谷杠二吧,这样创建它,然后杠杠t part森四个分区杠杠。
04:04
啊,副本四个走。这样呢,我们就创建了一个四个分区,四个副本对应的一个主题啊。那接下来我们来查看一下对应的它的一个分区和leader的一个分布情况啊,怎么查呢,它干掉。好查看。行,那现在摆在我面前呢,是这样一个过程哈,看好了,现在呢,一共有四个副本,1302对吧,每一节点上都有,然后对应的leader是1023,好,那我现在做一件事,把它先定出来。OK,把它定出来之后,现在我们要做一件什么事呢?做一件呢,将这个105给他干掉。那如果说105干掉,那105里面这个broke I蒂斯,他是不是这个三呢?那他干掉,他干掉之后,那下一个谁会成为leader呢?那你看首先在isr里面存活的,哎,把三干掉之后,那012都活着,那从012中选一个呗,那选一个AR中排在前面的,那是不是应该是它呀?
05:15
哎,就是这个二应该上位,那是不是这样呢?我们来演示一下啊,来到这里面将这个节点给它停掉。B,好不好,Serve stop,走。稍等一下啊,他停的比较慢。好,停掉了,停掉之后再回到102,我再查看一下对应这个节点信息走。你看跟我们预测的是不是一模一样啊,也就是说这个二进行了一个上位,哎,这里面的三退出,那我们再给他定出来。一个一个钉啊。那我定出来之后,下面我演示什么呢?我来到104上,我把104也干掉,那104里面存储的是不是这个博克是二啊,那博克二干掉的话,也就相当于这两个leader会被干掉,那好,那我们预测一下哈,那首先呢,他干掉之后,那下一个上位的是不是这个零啊,哎,零应该上位,那好,那他干掉呢,他干掉之后应该是这个一是不是上位啊好,那应该就是一零,嗯,这个是零。
06:23
一是这样吗?哎,那我们预测一下看行不行。CD。B。Stop,走。好掉了,掉了之后呢,看跟我们预测的是否一致啊中。你看那看一下,哎,上面的没动,那就是这是零是不是上位了,哎应该就是零,那下面呢,它挂掉之后是不是应该是一啊,哎,那确实是一,应该就OK了,好,那下面我们再做一些什么事呢?哎,我现在要恢复这个104和105,那我们关的时候是关的相关的105,对吧?嗯,那现在呢,我把105我先给他恢复过来。
07:10
B卡不卡?Server。Start。然后呢,杠。放。走。行,那现在我105恢复了,恢复了之后呢,我们再查看一下,对那个状态中。你会发现,哎,这个leader这块没有任何变化,但是isr里面是不是多了一个三呢,对吧,还多了一个三,那下面呢,我再恢复一下104,让这个二节点也恢复过来好。变好不好?行,那他也恢复了,那我们再来查看一下状态。看它对应的这个leader信息啊,没有任何变化,但是这个SR里面又恢复到了哎。
08:05
四个对吧,哎,四个节点行,但是呢,跟以前跟最初的有什么变化,看到了吗。这是最初的,有什么变化?跟最初的变化就是你这个三数排在前面了,哎,二数排在后面去了,哎这样吧,那你看这里面,哎三排在前面,跟你这个颠倒了啊颠倒了哈,也就说现在呢,我是打乱了对应的IR的一个顺序。那下面我再做一件事。大家做一件什么事呢?现在啊,我要将这个一一干掉。哎,也就是说将这个103干掉会出现什么情况,我们来预测一下啊,如果将这个103干掉的话,他应该是谁上位呢?幺干掉他掉了,他掉了之后,那排在前面的是不是应该是三呢?那那这个应该是三,那下一位呢,他零那零没动啊,那他干掉,他干掉的话是下一位是三,那是不是都应该是三呢?哎,一干掉之后都应该是三,哎那这里面呢,哎,主要是给大家讲的什么事呢?呃,防止大家认为说这个选举呢,是按照isr的顺序,如果你按照isr的顺序去理解的话,那一干掉的话,是不是应该是零上位啊,但是实际呢,如果你看到的是三上位,那就说明这事儿是不是对的,哎,就是咱们这个是按照AR的顺序进行排序,就没有毛病啊。
09:20
那下面来证明一下啊。看看到底是三还是几?我看B。好,掉了,掉了之后,见证奇迹的时候到了。看看到底是几。看哎,跟我预测的是不是一样啊,是按照三啊进行一个排序的,也就是说呢,它首先呢在SR里面存活,同时呢,它是在AR中排在最前面的,他会第一时间成为新的一个leader啊,这就是整个这个leader的一个选举工作啊。
我来说两句