00:00
好,接下来呢,我们来看一下消费者总体的一个工作流程,哎,先从宏观上了解一下消费者,他干了哪些事儿好。双击打开。首先呢,映入我们眼帘的是有这么几个角色啊,Producer生产者,右侧呢,这是消费者以及对应的消费者主中间部分呢是卡卡集群,好,左上角呢,还有一个主keepper这么几个角色。那接下来是由这个生产者向这个每一个分区的leader进行发送数据,发送数据,那发送数据呢,是一批一批的发送。发送到leader之后,那么这个follower主动的跟leader进行一个同步数据,保证数据的一个可靠性,哎,这是这块之前我们都讲过,那接下来看第一个问题,比如说consumer呢,可以消费某一个分区的数据。那下来一个消费者呢,他也可以消费多个分区的数据,就是刚才你说消费一个分区有没有问题,肯定没问题啊,直接消费,那好,那我一个消费者,我想消费多个分区,我这里面是消费的是这个,这个可不可以呢?肯定也没问题,那我要再加一个呢,我再加一个,这三个分区都有一个消费者来消费,有没有问题,没有问题啊,记住。
01:16
你像我这是两个独立的消费者,他们两个之间不发生任何关系,各消费各的,假如说我再来一条线,从这再来一条线到这。会不会跟他产生冲突啊,不会啊,一点都不会产生冲突,比如说消费者与消费者之间是完全独立的。好知到这个概念之后,那下面他开走,那下面来看一个消费者主啊,他呢就不太一样了哈。看一下这块。说,每个分区的数据只能由消费者组中一个消费者进行消费。那假如这样。现在呢,我这个消费者组当中的一个消费者来消费其中的这个分区的数据。那好问大家问题,那接下来我这个消费者还能消费这个分局的数据吗?
02:04
哎,这是坚决不允许的啊,不允许的,因为消费者主啊,你就把它当成一个独立的消费者,你说它是一个整体。大家呢,分工非常明确,你看如果你这样分工的话。那么也就说这一个分区有两个消费者来消费,那他消费一部分,他消费一部分,你后续是不是还得去重啊,哎,会造成重复消费啊,不利于进行一个管理啊,所以说他怎么分的呢?哎,他这样分的,比如说一个消费者消费一个分期的数据。嗯,那要求就是同一个分区不能由消费者主当中的。两个及以上的消费者进行消费。这个一定要注意哈,也就是说每个分区的数据只能由消费者组当中一个消费者消费。那说到这儿之后,那下面大家思考问题啊,那我消费数据没问题,那我消费到哪儿了。那谁帮我来记录呢?是吧,比如说我消费到这个二了。
03:00
这块不好意思,我刚消费完,我挂了,那挂了我再重启的时候。那我希望能够从这个345往后消费,那这怎么完成,哎,那这里面有另一个概念叫offet。比如说你消费到哪了,那这个呢,具体这个位置就叫up,那这个off outside会保存到哪里呀?你要保存到自己的肯修膜里面,你放到内存里面,那他一挂,那这个数据不就丢了吗?很显然不太靠谱。那我是不是得持久化到一个硬盘或者什么之类的地方啊,哎,那么卡巴卡呢,这个它的一个新版本,新版本这个offet呢,是维护在卡法的系统主题里面。用卡布的一个主题来帮我们存储各种off。那你想,卡夫的底层数据是持久化在磁盘上啊,比如说它是基于硬盘进行存储了,那么它的可靠性肯定得到充分的保障啊。那么在这个老版本的时候也是0.9之前吧,那么它的off是存储在哪里呢?哎,是存储在这个对应的主keepper里面啊,主kper里面,还记得咱们讲主kper的时候,是不是下面有一个肯修膜节点吗?
04:09
在老版本的时候,这个所有的奥赛都会挂载到那个路径下。那为什么从这个主keepper下面不存储而挪到了这个系统主题里面呢?那肯定是有问题,对不对啊,有什么问题呢?大家思考一下。如果所有的消费者都把奥赛的维护在主推本里面,那所有的消费者是不是要主动的跟主K本进行大量的一个交互。那你大量交互的话就会导致啊,这个网络上数据传输非常非常频繁,哎,那这个压力呢要大一些,所以呢,我们这里面呢,把这个opposite维护在系统主题里面,方便我们进行一个管理和维护啊。那这个呢,就是卡卡总体的一个消费流程啊,虽然说比较粗哈,后面我会有详细的一个说明。
我来说两句