00:00
好,接下来呢,我们来看一下第五章卡普总体性能的一个调优,比如说之前啊,我们讲的都是生产者到卡卡集群,诶这段的一个调优,还有呢,卡瓦集群本身的一个调优,以及呢,从这个集群到这个消费者啊,你说这块对应的一个调优,那接下来我们要讲的就是站在整体这个角度来说,去看这个卡瓦集群它的一些相关的调优手段,好吧,那接下来我们来看一下如何来提高卡帕的吞吐量,那我们之前啊讲过的是生产者到卡帕集群,还有呢,卡帕集群到消费者每一段的一个生产调优,那我们需要呢,把它整体是放在一起啊,来提高它对应的一个吞吐量。那好,那首先生产者这块的吞吐量提高,那四个参数一定要记住,第一个呢,就是对应的这个呃,BA size,诶默认的是16K,我们需要呢,适当的把它进行一个提高,第二个呢,是对应的这个link Ms,默认时间是零毫秒,那我们在生产环境当中,通常呢,会给它配置五到100毫秒左右,会根据你的实际的一个生产环境要求具体配置啊,那比如说呢,你希望呢,这个吞吐量高,那你可以把它提高,但是呢,它会导致数据的一个延迟,看你能不能接受的了啊。
01:14
那再往下一个呢,就是对应的这个压缩,默认呢,它采用的是这个耐这种方式,也就是说没压缩,那生产环境当中,诶,我们可以采用像拉住罗压缩,S耐皮压缩,还有对应的像这个GP啊,还有JSD啊等等,那你具体要采用哪种压缩方式,还是需要根据实际的一个压测的效果再来选定,具体要选择哪种压缩方式啊。行,那上面还有一个啊没说,就是这个buff for memory,诶,它的缓存大小啊,默认是32兆,那么如果你的数据量特别特别大啊,特别忙碌的时候,那这个32兆呢,是扛不住的啊,我们需要增加到对应的64兆,哎,来提高它对应的一个生产吞吐量啊好,这是生产阶段的四个参数。那接下来往下走的话呢,就是还需要提高对应的一个分区,那么增加分区就能提高它对应的一个并发度啊,那对它吞吐量呢,哎,是有一定的这个提高的啊。
02:09
下边呢,在消费者阶段这块如何来提高对应的吞吐量呢?诶首先呢,我们第一个呢,就是每批次抓取的这个数据量大小,诶最大值呢是50兆,你可以适当的往上进行一个提高。啊,那下面呢,还有就是每批次处理的数据量大小,那么这个默认值呢,是500条,哎,你可以来处理,比如说增加到1000条或者2000条进行测试啊。好,那下面还有最后一个呢,就是增加下游消费者的一个处理能力,你前面增加分区了,同时也增加了消费者的一个吞吐量,但是啊,你这块下游的这个处理能力很弱,比如说你这边消费完了之后,你往后写的时候写的很慢,那就主射了啊,那这也没有意义,你下游的这个处理能力呢,也必须配套的一个提高啊。行,再往下呢,是数据的精确一次啊,怎么做到数据精确一次呢?首先从这个生产者角度,我们要做的事就是你得保证它不丢对吧?那A呢,得配置为负一,那这保证数据不重的话呢,那幂等性啊必须开启,同时呢,还得加上事物的这种方式进行保障,那么光开启A等于负一并不能保证它完全的可靠,你还需要加上分区副本数必须大于等于二,同时还要要求is SR队列里面最小副本的数量也要大于等于二啊,这两个配合使用啊。
03:28
那下面呢,在消费者阶段,那这块你要做的事情就是要采用手动提交奥赛的,并配合上事物的一个使用啊,同时呢,得要求消费者输出的这个目的地啊,必须也得支持事物的一个回滚,你才能真正的做到数据的精确,一次是整个数据链条上任何一个地方都不允许出现任何问题啊,这个呢是比较难一点的啊,要注意了。那下面呢,在生产环境当中,哎,我一个topic主题啊,我到底要设置多少个分区合适呢?
04:00
是吧,哎,那首先呢,你要这样去做啊。正常情况下呢,哎,我们可以先做一个测试,比如说我们创建一个分区的一个topic,然后呢,哎对它进行一个测试,测什么呢?哎,我们这里面有三个概念哈,第一个呢,就是我们假设期望的一个吞吐量,那这个呢是这个。是吧,哎,假设我们期望能达到这个,嗯,我看这有没有啊,这呢希望吞吐量,我期望我这个卡马集群啊,能达到100兆每秒,但是呢,我现实情况下,哎,我生产者这个吞吐量最大就是20兆每秒。我消费者的吞吐量呢,最大是50兆每秒,那很显然它满足不了我100兆的一个每秒的吞吐量,那这是怎么办呢?哎,那直观的感受就增加分区呗,那我增加多少呢?哎,那这里面的分区数啊,等于这个就说等于你期望的吞吐量除以这个mini生产者吞吐量和消费者吞吐量,他俩选用最小的,那假如说哎,我这里面是100兆每秒对吧?哎,吞吐量,那我除以它俩一个最小的,那就是20,那算下来的话就是五个分区,那五个分区能不能满足我们对应的要求呢?你反过来推一下。
05:01
比如说我现在是五个分区了,那五个分区我乘以这个生产总存量,那这样的话就能它就能达到100兆每秒,那那消费者总量呢,是50兆每秒,那我乘以五的话,五个分区那不就250兆每秒了吗?那很显然也能够满足100兆每秒以上,是这样吧,哎,好,那在生产环境当中啊,通常我们这个分区数设置多少比较合适呢?一般情况下我们先设置这个三到十个啊,当然这个是有特殊情况的啊,根据你的业务场景有关系,有的公司数据量特别特别大,那你设置这点分区那肯定不够啊,有可能设置100个甚至更多啊,对吧?啊,那我这里面设置是通常情况下啊。呃,还有一点呢,要注意分区数呢,一定不是越多越好,也不是越少越好,这里面要搭建完集群之后,你必须得进行一个详细的测试,那怎么测试呢?后面这块有个集群压力测试啊,那时候再教大家,哎,好吧,哎,所以说这块呢,一定要注意啊,这个分区不是越多越好,也不是越少越好,要适合自己才是最好的哈。再往下,下边有一个比较难的问题啊,就是单条日志大于一兆啊。
06:03
啥意思呢?就是生产者这端接收到一条日志,它呢是大于一兆,比如说两兆过来之后,那么你的卡帕集群会出现什么情况啊,两兆的日志发过来。能不能处理的了,那这里要注意啊,呃,卡不卡呢?默认处理的单条日志最大的上限呢,是多大呢?是一兆。啊,是一兆大于一兆的话,就会出现卡顿卡死了,哎卡住了卡法不能进行后续的一个处理了啊那怎么办呢?记住这一个是这个叫ma max best这个值,这个值呢是默认是一兆,哎,它是表示博客端接收的每批次消息的最大值。哎,这是博科,这是卡发集群啊,卡发集群你发送过来的数据是不是以科为这个啊批次啊,对吧?啊,你这里不管哪个分区的数据,哎,我会把发到这个博科的。打包成一个就开请求发过来,那你发过来这批数据不能大于一兆,那如果你一条日志都大于一兆了,那么直接不就接受不了了嘛,对吧?哎,那这也要注意第一个好,那接下来我们看第二个参数叫markx request size,那这个参数呢,是生产者发往broke端每个请求的消息大值,那还是这边往这边发,往这个基因发,但是呢,它针对谁呢?哎,它针对的是这个topic而言的,你上一个参数啊,是针对博某一个博,那这次呢,是针对某一个for主题啊,或者S的主题,针对主每一个主题的对应的请求的消息,哎,也不能大于一兆啊,那一般情况下这两个呢,哎,要么都提高,要么都往下降低啊。
07:30
好,那下面还有一个呢,就是这个叫副本的一个同步数据,默认的是一兆,比如说你这边数据发送到这个卡法集群的leader之后,那leader跟follow之间是不是要进行数据的一个同步啊,哎,那这个同步啊,每批次这个同步这个数据量大小呢?哎,默认的是一兆啊,那如果你传过来一条日志都大于一兆了,那这块是不是就同步不了了啊,这都要适当提高,那么也就是说在生产环境当中这个值。要根据你传过来的日志的大小,进行适当的往上进行一个提高啊,假如说你这个生产环境当中啊,你们这个日志经常出现大于一兆的。
08:06
那你要知道最大的一条多多大六兆,最大一条呢是五兆,哎,那你这边呢,至少要提调到六兆对不对,每个值都给它调到六兆,那是不是就能满足对应的要求啊,但是正常情况下,在生产文件当中,一条日志的大小呢,往往是0.5K到2K之间,就能满足对应的一个要求啊。那下面还有最后一个叫ch max BA,这个呢,就是这个消费者端哎,去拉取这个博集群对应的数据的时候,最大一批咱说的是不是拉取50兆啊啊,50兆,那么其实这50兆啊,呃,它是一个软上限啊,就说你即使你这个这批数据过来,这里面大于50兆,那么其实它也能把这波数据拉回来啊,你说它其实受谁影响呢?它受的是这个影响啊,Max mass be,还有一个呢,是max message be,就前面这两个。这两个参数,你说你前两个,这也就说,也就是说你前两个这个参数啊,假如说我传过来日志呢,60兆对吧,按60兆,那么60兆呢,虽然说我这块写的是50兆,但是我也能把你的60兆的数据通过那个盎13的方法带回来啊,是没有问题的啊,这个呢要注意一下啊,所以说你前面这两个提高,那这个呢就还好,而且呢,这个单条日志超过这个50兆的这种情况几乎很少啊,很少很少,不不能说这个一点没有啊,因为之前听说过有个别公司啊,一条日志呢200兆啊,这种呢是极个别极个别的哈,而且也不建议说一条日志太大啊,这个呢要知道。
09:29
那下面呢,还有一种情况呢,就是这个服务器挂了怎么办?生产环境当中,经翅发现某一台卡卡挂了啊,好多同学就慌的不要不要的啊,那这时候大家要注意啊,首先呢,要正确的处理办法就是先尝试着去重启一下这个节点,哎,看能不能启动,如果没启动的话,你看他报什么错啊,然后根据错误呢,再进行一个排查啊好,如果说哎发现没有什么这个特别异常的地方,那这时候呢,哎,那就是重启也没行,没形的话,你考虑一下哎,看到内存O不OK,那之前我们是不是讲过查看内存的一些命令啊,在这呢。
10:03
这里面可以查看内存的一个,呃,使用情况对吧?哎,看它剩多少啊,还有多少内存使用,是不是这个内存不够用了,那你可以尝试着去考虑增加一下对应的这个内存啊,这是第一个,那接下来再往下看,那你还可以看一下是否出现这种卡顿的这种情况,那如果是卡顿的话呢,往往是这个CPU,哎,这个线程数不够,或者是你这个网络带宽啊,啊有点太低了,那你可以把这两个参数呢啊再适当提高,那这个呢,一般是遇到这种卡顿情况。那下面呢,还有一个呢,就是哎,有个别公司啊,前一阵有个呃,咱学生的同事啊,出现的什么情况呢?呃,他同事呢,手比较快,直接把一台机器所有的内容全干掉了啊,他执行的是2M-RF-RF,然后斜杠啊整个这个节点数据全没了啊,当时慌得不要不要的,其实后来我给他呃说了一下啊,其实没有什么大问题啊,我还特意问了一下你的副本数是多少啊,他说都是二啊,那二的话就没问题,你说你可以按照这个正常的服役新节点和退役旧节点这种方式对吧?哎,然后制定好这个数据的一个呃计划啊,之后呢,按照这个计划进行一个执行啊,然后把那个呃误删那台节点退役掉啊,之后呢,这个整个集群还是可以正常工作的,也不会进行一个丢数啊。
11:14
那这是服习挂了,那下面呢,就是这个卡瓦集群的一个压测啊,那压测呢啊,我们在下节课给大家详细的一个讲解啊。
我来说两句