00:00
好,接下来呢,我们来看一下第四章卡布消费者相关的调优,那还是老规矩,首先呢,快速的回忆一下消费者对应的工作流程,双击打开。打开之后,首先呢是生产者把数据啊发往到卡帕机群对应的leader partition,然后呢,这个消费者主闪亮登场,那首先面临的第一个问题就是消费者组队的问题,那么每一个消费者啊,他都会设置一个消费者主ID,如果主ID相同,那么他们就有条件成为一个主,那首先第一件事呢,就是消费者主ID的哈希扣的值,对这个50球模,那50是谁呢?50这个是消费者off outside对应的分区数,默认是50,那对他球膜就会诶算出来对应的这个分区所在的这个位置。比如说我们算的是这个一号分区,诶是在博一上,那么接下来我们就会选择博一对应的coordinator作为这个消费者组对应的老大,好,那假如说选择他之后,那下面呢,每一个消费者都要跟这个coordinator进行一个注册汇报,啊,说我要申请加入到这个组,那接下来这个coordinator就会选择其中一个消费者成为消费者leader,好。
01:15
然后呢,会把所有消费者相关信息发送给对应的这个消费者leader,然后呢,由这个消费者leader进行一个制定消费方案,那么制定的消费方案默认的像有这个润子啊,协助者粘性啊啊,还有这个像粘性以及呢对应的这个run币啊等等这几种策略啊。啊,那他制定完计划之后呢,会把这个计划再发送给对应的这个coordinator,然后呢,Coordin把所有的方案发送给对应的消费者,诶按照这个计划呢,进行一个消费。那在这个过程当中啊,每一个消费者都要时刻的跟这个狂停车进行一个心跳,那心跳的时间呢,是三秒好。那这里面要注意,如果说在45秒以内,那么这个coordinator跟这个消费者他们两个之间没有任何的通讯往来,那么这个消费者就会被认为退出了消费者主,我们需要怎么办呢?需要处罚再平衡,说的直白一点,就是把这个任务要分配给别的消费者进行一个承担,啊是这样一个过程,那好,那接下来那每一个消费者呢,都会从这面拉取对应的数据进行一个消费,那好,那第一波数据拉过来之后,如果你处理第一波的时间超过了五分钟。
02:30
还没有处理完,那就说明这个消费者诶已经挂了,那我们也会触发再平衡的一个操作啊,那这个呢,是整个消费者主的一个初始化流程。好,消费者主初始化已经完毕了,那接下来呢,我们来看一下消费者主的一个详细工作流程,双击打开。首先呢,左侧呢是对应的卡法集群,右侧呢对应的是卡法消费者。那么消费者要想跟卡法进行进行通讯,首先需要创建一个客户端对象,然后接下来进行一个初始化,初始化的过程当中,诶,他配置了第一个参数,就是对应的这个每批次拉取的最小的数据量,默认的是一个字节,那还有呢,就是这个一批数据的超时等待时间,比如说这面数据啊,没有达到这个最小字节数的时候,那你可以到了500毫秒仍然可以把这批数据拉过来。
03:18
那另一个呢,就是每批次拉取的最大的数据量呢,是不能超过50兆啊,这三个参数要知道一下,下面呢开始发送请求,然后呢,通过这个昂方法把数据呢回调回来,那回调就是一波一波的放到一个消息队列里面。那接下来消费者呢,会每批次啊处理500条对应的一个数据,那么第一道手续呢,就是要经过反序列化之后呢,是进行拦截器的相关处理,再往下就是真正的处理数据了啊,那整个这套流程下来之后,就是消费者组的一个详细工作流程,那一定要记住对应的这四个参数值啊,有一些面试官呢啊愿意去问啊。啊,那下面再往下呢,就是对应的这个参数的说明。
04:03
那首先第一个呢,就是这个boot serve,相当于是连接上哪一个集群,那这个呢是必配项,那还有呢,就是对应的这个key和value的反序列化,那这个呢,也是必配的参数啊,一定要会啊。下面呢是消费者主,这个是容易忘的啊,原因是因为命令行的时候,我们不需要输入消费者主的名称,但是呢,如果在代码里面必须指定对应的这个消费者主ID,那同时呢,在生产环境当中,也建议大家一定要指明对应的消费者主ID啊好。呃,下面还有一个这个叫什么呢?哎,这个呢,叫自动的一个奥赛的提交。那呢,这个就跟生产环境的场景有关系了啊,如果你追求的是精确一次性消费,那么这个呢,就不能采用这个自动提交,你就得采用手动的方式进行一个提交啊,那如果是简单的测试,或者是一些这个普通的日志的话,那我们采用这种自动提交也是没问题的,那么如果一旦采用自动提交,那么提交的时间间隔是多少呢?哎,是五秒钟我提交一次。
05:05
那下一个就是offet的一个,哎这个处理方式,那第一种呢,就是从最开始这个offet的位置啊,进行一个消费,那还有诶,它默认的采用的是从这个增量这种方式啊,也说最新的哎,往后再来的数据,我进行一个消费啊。好,呃,那下面呢,还有对应的这个是呃这个消费者,呃消费者opposite对应的这个分区默认是50嘛,那这个呢,一般也不建议大家修改啊。下面还有一个参数呢,是这个心跳时间,嗯,咱们说啊,这个卡瓦消费者跟这个Co要进行一个通讯,那么通讯这个心跳时间间隔是三秒钟,通常不建议大家进行一个修改。那下面这个呢是诶心跳超时时间45秒,比如说消费者跟考点连接超过了45秒,没有进行一次的通讯,那么就会退出对应的消费者主,那这个45秒呢,一般情况下也不进行一个修改啊。
06:01
下面还有对应的这个这个参数呢,表示消费者拉取过来一批数据之后,处理的时间超过了五分钟,那么会处罚再平衡操作,那同样道理,这个呢,一般呢,我们也不去修改它的一个时间啊,但是这个时间我们要记住啊。好,那下面我们来看下一个,就是对应的这个。诶,这个消费者啊,每批次拉取回来的这个数据啊,最大值呢,是这个50兆,一般情况下啊,不是数据量特别大啊,我们一般不建议去修改这50兆,那如果呃,集群那边数据量特别特别大啊,我们希望能够提高存储量的时候,那可以适当的一个提高哈。下面呢,是这个消费者处理的每一波数据啊,是多大呢?哎,每处理的每一波数据默认的是500条,那通常情况下呢,为了提高这个吞吐量,你可以提高到1000条啊,或者是2000条,这个呢,要根据实际的情况进行灵活的一个配置啊。行,那再往下,哎,消费者再平衡,那再平衡的话,那还是回两个参数比较重要,一个呢是。
07:01
心跳时间超过45秒,没有进行通讯,那么就是触罚再平衡,另一个呢,是消费者拉取过来一波数据处理的时间超过了五分钟,那这个呢,仍然触罚再平衡啊,那这两个参数值记一下,那下面还有一个呢,就是消费者分区分配的一个策略啊,那有什么呢?有re re Robin粘性和对应的协助者粘性,那这四类的方法啊,要知道哈,那这四种策略啊,要知道哈。下面呢,是指定off赛的进行一个消费,在生长环境当中啊,有一些特殊的场景我需要,哎,比如说我指定off赛从1000这个位置之后进行一个消费,那这种呢啊,那大家要知道怎么进行一个设置哈,在我们之前的课程当中已经讲过了,这块呢不再详细叙述了。下面呢,还有一个呢,就是指定时间进行一个消费,哎,比如说呢,现在呢是下午两点,哎,我希望呢,从那个呃,下午12点开始啊,最近这两小时的数数据,我再重新进行一个消费,那你可以按照时间进行一个指定啊,那以前也讲过了,这块呢,不再详细说明,哎,如果想详细看的话啊,看一下啊这个卡瓦基础部分的一个讲解。
08:07
下面还有这个消费者事务,那消费者事物呢,这个呢,后面我们再讲项目的时候啊,会给大家再去讲解啊,那这里面呢,呃,先大家知道消费者呢,也是有对应的事物的处理就可以了。那那接下来呢,我们看一下消费者如何来提高吞吐量,那这个呢,也是非常非常重要的哈,那我们可以考虑增加这个消费者对应的分区,这是一方面,增加分区肯定可以提高对应的存储量,这没啥说的,对吧?哎,提高对应的并行度嘛,那下面呢,还有呢,对应的就是这个值,这个值呢就是对应的,哎哎,每批次拉取的数据量啊,是50兆,那这个呢,可以适当的提高,比如说提高到60啊70啊啊这个呢,对它的吞吐量呢,是有效果的,后面呢,我们再做这个呃,机群的压测的时候啊,会给大家做一个实验啊。那还有呢,就是这个这个参数啊,要根据正常的生产环境啊,灵活的向上调或者向下调都有可能啊呃,那默认的是500条啊500条。
09:01
行,那这个整个呢,就是这个,呃,卡不卡消费者相关的生产调优的一些内容,那这块呢,讲的比较快啊,原因是因为之前我们这些知识点啊都讲过了啊,所以说这块呢,没有必要浪费太多时间。
我来说两句