00:01
好,呃,下面我们再来看这个consumer消费者。这位是稍微复杂一些。呃,消费者消费的消费者啊,负责消费消息一个消息,呃,消费者从博服务器里边获取到消息,并从相应的业务,呃并并并对消息进行相应的业务处理。那么我们结合着上面举的一个例子啊,那我们再看什么是消息消费的过程,你比如说。啊,比如说呃,我们就是业务系统上面不是一个业务系统是吧,我们对日志呃进行,比如说咱们这样吧。QM。读Q系,他对对日志进行解析。
01:01
处理的过程。就是什么,就是消息。消费的过程。对吧,例如吧,还是例如向向上。六。对吧,然后我们再。假如这个。刚才说的电商平台。电商平台,呃的业务系统。你不是这边提交了秒杀请求,呃,写到MQ里边了吗?这MQ是干嘛的,那你电商平台的业务系统是要把这个这个秒杀请求要读出来呀,是吧。从MQ。嗯,这个。读取。都知道。啊,秒杀请求。并对请求进行。处理的过程。
02:02
就是消息消费的。过程。对不对啊,这就是消息消费的过程,所以这是生产消费,这是对的。然后呢,我们说啊,这个让他Q里边的消息,消费者也都是以什么消费者组的形式出现的,大家看啊,这就是一个生成的组。这是一个消费者组,都是以组的形式出现的啊呃。消费者。呃,消费者组是同一类消费者的集合。同一类消费者的集合。这类消费。是同一个topic里边的消息。就是啊,这个这个需要大家注意。希望大家注意,就是。消费者消费的时候,他只能消费一种逃避。它不像生产者,生产者可以生产呃,多个主题的消息,但消费者只能消费。
03:05
一种套路的消息。这是我们需要注意的,然后消费者使得消息消费方面实现了负载均衡和容错的目标,变得非常容易,这个负载均衡啊。呃,负载经是什么意思呢?范家兴说。嗯。举个例子啊,举个例子啊,这是我的这个。呃,111个topic啊topic边呃,我的消息,比如说都这是一个队列,一个Q2个Q3Q4Q。我这么多。这么多,如果说我这儿消费者组啊,这是我的消费者组。里边就有一个消费者。那么他会同时消费这四个,消费这四个队列里边的消息,怎么消费,一般的消费方式啊,是从他这读一个。
04:02
再从他读一个,再从读一个,再从他读一个,这是什么轮询的方式?一个一个来。一个一来啊,包括在写的时候大家注意啊,生产消息的也一样,这如果是我的producer是吧,然后这里边有一个生产者生产消息的时候怎么写,他一般也是在这里边写一个。消息,紧接着给他写一个。给他写一个。给他解决。他是这样的。啊,他他会轮循着来,轮循着来就把消息给他均衡开了,对吧。那么如果说我这儿现在有两个,你注意有两个消费者呢,它自动会。给他分两个,比如说你消费这俩啊。那你消费这俩,当然有哥们说为啥他消费的是这俩。那难道不能是这个和这个吗,可以。难道不能是这个和这个吗?可以,反正是各自分俩。
05:05
才会给他平均分了,那这样的话,你这个消息消费方面,他不是是不是就实现负载均衡了,但有哥们说那你要三个。要三个。三个,哎,我这样啊。你要三个呢,三个他没法平均了呀,这里边会出现不平均的情况,那他给他,他给他,然后这俩给了他不平均,那确实不平均啊。当然了,呃,生产者呢,你注意啊,这个平均。这个负载均衡是针对谁的,是对于我们。Q,对列来说是平均的,但是消息平均不平均,这可真不一定。这个真不一定啊,怎么说呢。你比如说啊,你看似他一个人消费了俩啊,你我的活很重很很重是吧,啊,这俩都是消费了一个啊,好像他们活很轻一样。
06:05
关键你要看生产者,假设生产者啊,我这边有几个,我要有两个生产者。他也会均开,比如说他呃给他里边分,他给他,当然这个生产者到底给哪个Q里边分啊,这个发送啊。如果你采用默认的方式,他也会给你平均。当然,用户可以指定。我给每个里边写数据。知道吧,用户可以指定来就好,你只要可以指定就好了,比如我分给你的。啊,这是一号,这是二号是吧?啊,我分给你啊,这是一号,你给这俩里边发,二号你给这里边发对吧。但是呢,你会发现。很多数据哗往这里边写。
07:00
二号没有数据。太平人没有消息,二号没有生产。所以有可能会出现的情况是。这俩都快忙死了,就在那闲着呢,别看他分了俩在那闲着呢。所以这个负载均衡啊,大家注意指的是什么负载均衡。是Q的负载均衡,而不是消息的负载均衡。在这点上和卡姆卡是一模一样的。呃,这负责银行,然后还有个什么叫容错啊,容错这个所谓的容错是指的什么。容错是指的这个啊,大家看。呃,如果说啊,这三个消费者在消费的过程里边,比如说。啊,这个终于啊,不忍重负,怎么挂了这个这个家伙挂了,他挂了,那他的消息谁消费呢。对不对,他的消息谁消费,有哥们说他闲着的呀,让他消费错了,他的消息啊,这里边会平均分,他已经分了俩了,这就一个,所以这个会分给他。
08:06
让他紧接着继续消费,会继续消费,比如说他前面消费到这个位置的时候啊,停了,他挂了。那么他会从这个位置开始继续消费。这是什么容错?这是容错。当了,你说在销售过程里边啊,他他他也不忍重负,也挂了。那。就剩下比如消费到这个位置的时候啊,这儿消费到这个位置的时候,他挂了。那现在就剩那一个了,所以这四个都会给了他。而且它会紧接着从这个位置开始,从这个位置开始。来消费。所以这是什么?这是容错就是容错啊。嗯,所以在这儿给大家简单写一下啊,这个什什么是负载均衡啊。嗯。这样啊。
09:00
负载。挺好。是吧,这个负载均衡。指的是诶。这个负载均衡绝对什么加。不同的。Q。呃。将将。一个肯定是一个啊中的,呃,不同的。Q。啊,平均。这个分配给。不同的。不同的考生。这个不同的是是什么分配给啊同一个。
10:03
Consumer。的。不同的consumer,那肯定是同一个consumer group里边的啊,这是什么?这是负载均衡。Re。并不是。嗯。将消息。呃。拓展均衡。不是消息,而是什么是?那这个容错啊,这个容错。容错啊,是指的什么呢?啊容错。就是咱们刚才说的怎怎么怎么描述一下这个过程。啊,这个过程就是。呃,一个。Consumer。挂了是吧,啊,咱们就口语化一些啊,怎么好,怎么容易理解,咱们怎么写那么其他啊呃,这这个。
11:04
该。Consumer。中的其他。Consumer。可以。接着。消费。可以接着。消费。Yu。Consumer。嗯。消费的。是。这是什么?这就是容错。就是容错啊好。嗯。然后呢,这个说过以后啊,我们再来看啊,这是什么哎。说教这组里边的consumer。消费者组里边的consumer,它的数量应该小于等于订阅topic的Q的数量。什么意思呢,就看这啊,我们消费者组里边就是包含了consumer的数量,我这三个。
12:08
他说应该小于等于订阅,他要订阅一个topic嘛。这个topic它的什么队列的数量,这里边儿有两个队列。这三个consumer如果出现了它多于它的情况,会出现什么问题?超出的,超出Q的数量的,多出的consumer将不能消费消息。比如说。啊,这个要给他,这个需要给他。你说。啊,这这这哥们很很忙,我能不能让他俩一块消费这个。不行,咱们前面给大家就说过,我们一个Q只允许一个。Customer来消费。就一个group里边的一个来消费。不允许出现多个consumer消费同一个Q。对吧。但是我们可以怎么样?
13:01
我们可以,比如说这这俩考前都没有。可以一个考消费两个。这是允许的。是吧,但你不能一个Q有两个消费者消费,这是不行的。它可以负载均衡,这不负载均衡,这它这闲了,所以闲了你就相当于什么,你这个资源就浪费了,这个我们就需要注意这个啊,它的数量要小于等于它的数量。再看它。这边的组里边的consumer的数量应该小,呃,这个这个说过了是吧,这个。呃,这样说了,不过一个topic类型啊,一个topic类型的消息可以被多个消费者同时消费,多个消费者组同时消费,这个之前咱们也说过,就讲讲哪的时候,就讲前面这个基本概念的时候,给大家说了,这有点复杂嘛,说的。这两个不同的消费者组。是吧,他消费这个,他消费这个。
14:03
但你不让,不能让他再消费这些对吧,可是这是一个消费者组,这消费者组可以消费他,消费他。这是允许的,两个组可以同时消费。但是同一个里边不同的consumer不能消费。同一个。Q。是吧?呃,就是就其实说到这儿啊,老雷再给大家加上这么呃一个补充吧,注意吧。再再写上两句话啊,注意,嗯。为什么呢?这样一啊,一个消费者种中的。消费者注意啊。必须必须订阅。完全相同的。特别。
15:02
它必须电源完全相同,它这个。呃。就是他们这因为这个topic啊,这里边还有个什么问题,我们到后后边我们再讲原理的时候再给大家提,说这里边记不记得还有个tag的问题。是不是包括tag的问题啊,就是我们后边要给大家讲的这个并列关系个一致性啊,到后边再说啊,你知道这是什么,完全相同,这个完全相同啊,这是第一点。第二点。消费者赌。只能消费一个。消息。啊,不能,呃,同时消费。多个。消息。就是这样。把这个。写上一,这个写成二。可能更好。
16:02
这样搞。啊,它只能下了一个,那消费一个,那不是完全相同了,不一定啊,这个topic啊,必须完全相同,这一个你也得完全相同,可以topic相同,但是什么tag不一样,所以这是我们后续要要说的啊好,这是我们说的比这个啊稍微复杂一些。
我来说两句