00:03
好,那么我们看啊,Re balancell产生的原因说了,产生的原因无非就两个,一个是。下角所定义的。啊Q。说订阅的,确切的说应该是。Com。是吧?所定义的Q数量发生变化。啊,第二个啊,是什么小组group里边消费者数量发生了变化。你只要你发生这种变化了,那么它都有可能会引发这个reb,当然了,具体到我们,呃,这个这个生产环境下,这个具体的场景啊,我们简单说说吧。比如说啊,我们。Q,啊,数量发生变化的。场景。有哪些?大家想一想有哪些?
01:00
就是说。扩容或者是什么容?对吧,So,那第二个啊,ER。这个升级。是吧,呃,升级运维。啊升级啊运维那有可能,呃,我需要听到这个功能。暂停这个功能。那他。也也有可能会导致是吧,第三个。呃,ER与本身没问题。但它和我们的。So。接。网络。发生了异常。那是不是相当于也是这个broke没了,因为你只要没有注册到name里边。那就相相当于什么,你这个这个broke是没有的,没有那意味着什么,你这个broke里边那个。
02:00
队列Q就没有了,对吧。当然正常啊,我们的Q也可以进行。扩容或者。Sorrow。是吧?这都会引发什么Q数量变化?那。那再看看。呃,我们的这个消费者吧。呃,消费者。呃,数量。发生变化的。调整。有什么其实和那个对比的来就行了啊。第一个我们的。Rope。这个扩容。或者是说什么。对吧,它的数量都发生变化了,或者是我们具体的进行什么升级维护吧,维。或者我们的consumer与name。
03:04
So。网络。一场。就网络异常,那也就意味着你这个consumer啊就不存在了。是不是?那那也就。那现在这个CT就没了。啊,这是什么?这是我们具体的这些场景,这些场景会引发他们数量的变化。然后我们再来看这个rebe这个过程啊,这过程这过程呃,大家看一下还是有点意思的。他说这个在里边啊,维护着。多个Mac集合。啊,这些ma集合中动态存放的topic里边的啊呃,Q的。信息。Consumer里边这个实例的信息。那这里边儿有这样的两个脉法啊,两个脉法。
04:04
那一旦发现我们消费者所定义的Q的数量发生变化,或者是呃,就是我们这个消费者数量发生变化,就是这俩条件达到了是吧?啊,立即就会向我们的consumer group里边的每个实例发出re。那他会让我们的啊,这个consumer啊,每个consumer力啊,这个接re,这个re你注意啊。呃,让他Q里边这个是谁,是是自身完成的,你注意啊,他自身和卡卡不一样的地方。那一会儿给大家对比一下啊。那么这里边儿就是这里边儿维护的是多个集合,这或者说这两个集合吧,很重要的是这两个集合啊。嗯。这样啊,我给大家也是咱们再讲的深入一些啊,我把原码里边,呃,这两个具体的这个集合给大家说一下啊,一个是叫什么叫a topic。
05:07
Config。Manager。那么它的K是什么啊,K是。名称。Value。是。To。就他啊,你注意。就那个房地了。它里边啊。维护着什么,维护着这就你你他给的配置信息嘛,啊,维护着这个。该。所有。Q的。它里边有队列数据,所以你看它里面有什么,这个topic对应的所有的就必须在这。
06:00
而这个数据,这个Mac里边数据是动态维护的啊,大家看这是动态的,比如说你这儿一旦发生变化,它就会变,它一变。就引什么就会他发通知知。而且这还有个叫。Manager。Key是什么?Silver。然后呢,Value是什么是。Consumer。Evil。哎。是啊。
07:03
那同样的道理,这个音里边啊。维护着。任何所有。啊,这个。唐性们失利。视力数据。对你说向所有的发发发向谁发他里是吧,你这个定义者向这个定阅者啊。诶,我我我我我给你,我给给他里边啊,给这这个group,它里边所有的成发,但这其实还有一个问题。就是他们的定量关系,现在啊。上是没有的。对吧,就你说你要给他哈,他和你这个topic有什么关系,所以其实还有一个map啊,叫什么叫。Consumer。Offset。他的P是什么?
08:01
沁源。呃,怎么说呢,就是你这个啊,你这个topic。可是你这个topic和这个月的这个topic的group,它的一个一个组合。这样写吧。P。呃。Public。嗯。对。订阅。该。Topic。啊。Group。But。就是你你这个东西既能。然后呢?Value。是什么?是一个。
09:03
内层就也是说它是本身是一个双层啊,它是一个内。啊,然后内层map。的P。是什么?内map的是。Q。然后。内层。Wife的。Value。喂。呃。该Q。呃的消费。进度。他记录这个消费进度。这样的话啊,他就会通知谁呢啊,他就会通知啊,你你你这里边儿所有的这些group啊,这这这group里边对吧,然后呢,通知的时候还会携带着。
10:05
他会携带着什么,携带着,呃,就是就是就是。这个offset。这边还有off,你到哪了?对吧,就这里面还有一个啊,我们就不写了,就是就我刚才说的具体的订阅关系,还有一个订阅的啊,还有个订阅map。能体现他们对外关系的,你这里边我们就把这最最重要的这三个给大家写出来吧。啊,这是源码里边啊,涉及到的这三块,因为我们。这个课程里面就讲这个原理,我们不图源码啊,就来把这个源码这一块东西呢,涉及到一些重要的东西,给大家拿出来说一下啊。呃,接着说啊,这个立即向consumer group里边的每个实例发出通知,这个是由各个consumer自己完成的,你看consumer实例在接收到通知以后会采用。
11:04
还有什么持有分配算法?会采用Q分配算法。Q分算。自己获取到相应的Q。客观的算法啊,我们这个这个一会儿要给大家讲的是吧,一会儿详细讲啊,内容这个内容也也还是比较多的啊,啊我们一会说它。呃,获取到自己相应的这个Q。然后呢,即由实力自主进行,但这个东西啊,是和我们卡不卡。不一样的。卡不一样。嗯,我们和卡卡做一个。
12:02
呃,简单给大家说说啊,简单说一下。就是不卡啊,卡不卡啊,它就是一旦啊,我们发现这个,呃,出现了re balance这个条件需要发生re balance了,对吧?嗯。对。卡不卡?Are you that。呃,发现。嗯,这个。出现了。Balance。了解是吧,咱咱们就口语化一些啊,怎么好理解怎么来。ER么注里边。Co Co。哦。Litter。啊,会调用。
13:02
Call ordinator。完成。Red。Ju oter是个什么东西?他啊啊是。Broker。中的一个进程。在卡不卡里边,他也叫博格啊。就我们那个卡不卡主机啊,它也叫brokeer,就像我们rock q主机,它叫brokeer一个意思啊,它它是它里边一个进程。这个。会在哪儿呢?Consumer。中。他会选出一个什么。叫group。Leader。就我们会在这个这个group里边不是有有。有好多consumer啊,选一个group leader。
14:02
啊,选个头,然后呢。由这个。Leader。啊,根据自己本身啊,自己本身,呃,本身组吧组情况。啊,完成什么。它里边它没有我们前面给大家说过啊,在卡卡里边没有Q队列还有什么。要。分区。完成分区的。在等。我建是我这里边有我的啊这个因为它是有ID的,我们的consumer也是有consumer ID的,哎透过吧,这个每个ID变上哪个consumer ID,诶会给你搞出来一个表。社会关系是吧。然后呢,呃。
15:01
这个啊。再分配。结果会。上报给我们的扣。哦。上报给他。啊,这个。疼。同步其他。就是同步给谁我们。Who have to?所有。Consumer。这是卡不卡里面的。这是卡卡里边,所以大家看可以看到啊,那这他的reb这个过程呢,和我们卡普卡和我们卡Q是不一样的。对吧,它里边有一个,呃,有个有个叫什么coordinator。由他完成我们的这个再分配。而我们,呃,什么?
16:03
是自己完成的,自主进行。就总结一下的话啊,总结一下的话就是呃,卡夫卡的。是由。Co。呃,不对,不是有coordinator啊,是由谁?是consumer。Leader。完成的。对吧,然后由Co怎么协调,Co意思是协调者由同步给其他的对吧。而。Q。中的。呃,是由。每个。嗯,Consumer。
17:01
自身。完成的。嗯。Group。号。不存在。Leader。对不对,它不存在leader啊,更没有我的broke里边,更没有call,这是它不一样的地方。对吧,这样的话,我们就呃,把这个这样啊给大家就讲透了。
我来说两句