00:03
好,下面呢,我们再来看啊,Re balance机制。那什么是re balance呢?Re balance啊,就是我们的再均衡啊,指的是。把一个topic下的多个Q,一个topic下的多个Q,多个队列在同一个consumer group中的多个consumer间进行重新分配的过程,因为我们大家知道啊,就是大家看这个图,这是我们topic里边Q12345有五个Q。有两个consumer。他得给他分呢。是吧,啊,他分了啊三个,他分了两个。那如果说啊,在之前没有这个CONSUMER2的时候,这consumer group里边就包含CONSUMER1,那他。一是不是就就就就会消费者同时会消费这五个队列,你现在有了二了。所以呢。
01:01
所以这俩分给谁了?分给他了。把这三个给他了,那这个过程就是re balance。然后呢,你说我再加一个分成三个了。那这三个再看还会再变。四个,还有再变五个。每人分一个。是吧,每人分一个。哎,这是整个这个在变化的过程啊,这个分配就分配给我们consumer这个变化,这个过程就是re balance。那re balance机制啊,本意是什么?是为了提升消息的并行消费能力?啊,原来是一个人在消费,现在多个人消费。啊,这这刚才例如啊。呃,如果我们此时啊,呃增加一个消费者,那么就会给其中呃,这个这个这个1111个消费者,呃分配两个队列,然后另外一个分配三个是吧,来提高这个并行消费能力,所以balance啊,他的目的是什么,就为了增加什么。
02:06
提升他的并行消费能力啊。并行消费能力。哎。那么这里边有个限制,什么限制呢?就是其实刚才给大家说这,那我如果group里边有五个啊,每人分一个,那我要六个呢。会不会re balance呢,不会了,七个呢,也不会了。为什么?已经超过了Q的数量了,可以这样说啊,呃,一个由于一个队列最。最多分配一个消费者。因此,当某个消费者组下的消费者实力数量大于。大于队列的数量的时候。是吧,啊,这是大于啊。
03:00
那么多余的消费者势力将分配不到任何对,也就是说他就不会再进行re。不是啊。呃,那么紧接着我们来看这re balance啊,它的危害。那么任何东西都是有利有弊啊,一个双人间balance在提升消费能力的同时也带来一些问题。第一。我们叫消费暂停。是吧?呃,在只有一个consumer时。然后他负责消费所有的对列,增加了consumer的会发生re balance,就是说这个re balance这个过程啊。那么re balance以后啊,此时原来consumer就需要暂停部分队内的消费。其实不是暂停部分啊,是在re balance的过程里边,他会把所有的消费全部给暂停掉。先停下来。然后再分,分过以后我再继续消费。
04:02
等到这些队列分配给新的consumer以后,这些暂停的消费,呃,消费的队列才会继续被消费。就是它会re balance啊,会引发什么一个消费的暂停。呃,然后呢,消息重复啊,这是个大问题。Consumer在消费时,呃,消费新分配给自己的队列时,必须接着之前提交的消费进度的offset继续消费,就是说你前面那个。大家看啊,假设原来是一个的时候。啊,他啊一个在消费这五个队列,比如消费到这这个位置了。那现在考什么二?消费,消费他了,那么他会接待这个后续。消费后边的。他会接着,而这个我我们大家需要注意啊,就是你每消费不管是谁,每消费完一个。
05:04
消息。那么他都会提交这个消息的offset。提到我们的broker。提到broke,然后呢,记录一下,当然我们现在一般我给大家这样说啊,我们说的这种肯定都属于什么。那肯定属于这个消费属于集群消费啊,我们讨论的都是集群消费,这个前提大家要知道,因为你要不是集群消费。他不会引发re balance。因为。如果是广播消费。是所有的消息。他都会获取。你再增加一个,也是所有的消费消费,呃,这个消息它都会获取,不存在re balance,所以这个re啊,你要知道讨论的前提。呃,问题,呃。
06:02
呃,这个这个re balance机制吧,呃机制。讨论的。前提是。叫鸡群。下。消费是吧,是集群消费,这这我们首先要清楚。那么。呃,所以所以你这边集群消费,我们大家知道集群消费的,呃,那个消费进度是保存在哪的,保存在我们的博客里边,我们也看到过。呃,当前用户主目录下,呃那个呃下边有个con,下边有那个点,是不是在它里边存我们见了。就他们。是吧,啊,我们见见过他啊。
07:00
所以我们大家要要清楚一点啊,就是我每消费。般数据啊,一般你注意我们这个消费者消费的时候啊,是一下消费一批数据。那这个我们大家要要清楚啊,就是你要读数据的话,它一般不是一条一条读的啊,一读比如说读一批。这批可能100条数据。A what?拿过来,拿过来,我消费,消费完毕了,那么只要我消费完了,我马上会再给。提交。一个提交什么我所有消费的这些消息,他的offset。我都会提交,提交到我的这个broke。他他有这样一个过程提交的过程是吧,你消费进度嘛。呃,然后呢,我们看啊。必须,呃,接着之前考生提交的消费进度的offset继续消费,他有个提交。然而。
08:00
默认情况下,Off是异步提交的。关于这个异步提交啊,同步提交,异步提交,呃,我们到后边会给大家。呃,详细来说。到到后边在在这这个奥赛的管理上啊呃,会给大家详细来说。呃,这会儿先给大家简单说一下这个什么是同步提交,什么是异步提交啊。呃,这个。先说同步提交吧。同步体现是什么呢?就是。呃,这个这个这个提交。对吧。呃,其消费完毕的。呃,一批。消息的。需要等待。需要等待谁?
09:00
呃。的成功。从A。呃,只有你收到成功A了,哎,成功的响应了。呃,然后我才继续消费这个,呃,后边的消息。呃,当。呃,收到。嗯。啊。卡。长门。才会。呃,继续给消费,这个消费肯定要获取啊,获取。消费的下一。数据。呃,消息吧。消息。那你在等待在这个过程里边啊,在等待这个A的过程里边,那个我们的consumer啊,它是阻塞的。嗯。在。等待。
10:01
A期间。Consumer是什么?是阻塞的。是阻塞的啊。那这是什么?这叫同步提交,当然了,它这里边有个tout啊,就是。呃,有个有个超时啊,如果你超时了,我我还没有这个获取到成功的APP,我会重新再提交。我把之前提交重新再给你提交。知道吧,那他有这样一个过程,这同步提交,那什么是异步呢?那这个同步只要了解了那异步。就好说了,一步是什么,一步就是。我提交了这个给以后啊,提交了其这个这个这个后。嗯。不需要等待博的成功啊。这什么?不需要啊。不需要等待成功啊。
11:01
那不等的。不等待。那那那那那那那怎么样?七嗯不要提了,嗯,那大家好理解啊呃,Consumer可以直接啊获取。消费。下一批。下。这什么?这就是异步提交。我不需要等,我就直接直接我就可以消下一批,所以异步提交它属于什么,它这个效率要高一些啊。默认是什么?默认是义务提交的。但这个异步提交会出现一些问题。他说是异步提交的,呃,这个异步性导致提交的ET与consumer实际消费的消息并不一致。这个不一致的差值就是可能会重复。重复消费啊。重复。
12:00
消费的消息。什么意思呢?呃,就这个意思啊。大家看以他为例啊,原来就这个consumer啊,呃,都就就由他一个人在消费,他读这个队列里边啊,比如说一次。读到这儿。是吧,这读了100条啊,我读读过来了。之前你注意啊。或者这样说吧。呃。他原来啊,消费消完了他诶他到这提交了啊,那提交O了物业消费到这这段就是比如说500条了啊,前面已经500条了啊。然后呢,我现在在读500条,呃,然后我现在现在在在读读读,比如读了这块,这是100条啊,假设这100条。100条都到这儿。这他。现在啊,消费完了。
13:00
消化完了,或者说正在消费过程里边,他还没有提交offset。哎,然后。这个这个新增了,这抗二过来了。糖,那过来他就会发生什么,Re balance。他还是re了,我们一会会讲这个balance它产生的原因啊。啊,就是你这consumer啊呃,数量啊发生变化啊,它就会引发re balance,那他这增加了一个,增加一个请re balance重新分配分给他了。对,他这时候他。要接着之前你提交的offset进行消费,他之前提交在哪,在这在这呢。这500呀。你这100条是不是读懂了?他要么销毁完毕了,或者正在销毁。也消费了一部分。那你现在他会重新再读,比如说再读又是100条,会读到这,那不就意味着什么,意味着这100条数据。
14:00
可能被他消费过,被他也消费过。而他们对外是一个消费者啊,你注意这是consider group对外是一个消费者,你说这个数据被这个group重复消费了。对不对,哎,这就是我们说的重复消费啊,就是重复消费。呃,所以啊,这个这边就引来一个新的问题,就是。我们一次性啊,就是读,不是一次消费一批数据嘛,这一批数据多少比较合适。你读的啊一批啊,这一批数据,如果数据啊。比较大。它的好处是什么?好处是这个,呃,消费能力,那就是消费效率比较高一些。因为因为你你要一条一条消费,消费完了再提交offet,消费完了提交offet,它整体性能会下降,对吧,我一次读100条。
15:00
批量嘛,批量处理肯定效率要高啊,一次读100条。肯定比一次多一条,销量高得多。啊,所以啊,它的效率消费效率高了啊,性能提升了,但是呢。他发生这个重复啊,重复消费这个。这个数量啊,被重复消费的消息的数量有可能会变大。对不对。那那我要少了呢。少了。的效率低了,但是它重复消费的这个这个这个。消息的数量都会下降,所以这个啊是需要你根据具体的业务场景。哎,你选择一个相对均衡的这个数量。这是我们需要的,简单写一下啊,就是呃。呃,对于呃,一次性。
16:00
夺取。嗯。消消息的数量。呃,需要。根据具体业务场景。嗯,然后选择一个啊相对。均衡的。嗯。是,还有。必要的因为呃,数量扩大性能性能啊。呃,性能。呃,系统。系统性能,呃,这个提升。行吧。呃,但这个产生。嗯。
17:01
重复。消费的。消息。数量。可能是可能啊会增加。是吧?然后。数量。过小,呃,性能。系统性能。下降。但。嗯。被重复。消费的。消息数量。可能。会。呃。减少。对吧。呃,这是我们说这个这个这个消息重复啊,消息重复。这还有个叫消息突刺,消息突刺是什么意思呢?一个刺啊一个刺是吧,但是对于re balance啊,呃,可能导致啊冲消费。
18:00
由于可能导致重复消费啊,如果需要重复消费的消息过多,或者是。Res暂停时间过长。都会有可能会什么积压一部分消息。会GI一部分消息,就是你如果暂停时间长了,会接一部分消息,或者说你这个重复消费的消息过多了,那都可能会导致re结束之后,瞬间需要消费的要会过多的表现。瞬间需要消费过多的消息,哎,这是什么?这就是这个消费突刺啊,这个大家知道可以了。
我来说两句