00:00
好,接下来我们看一下并行度的一个考虑。那这一块呢,并行度也跟内存一样啊,啊,并没有一个固定的原则说啊一定给个八给个十就特别好,那也不一定啊,跟你的代码逻辑有很大的关系,那我们先来了解第一个全局并行度,也就是说你不希望很详细的去设置。另外呢,咱们也可以按算子级别分门别类,每一种该怎么去设置啊,给大家一个建议,那么首先咱们回忆一下并行度的一个概念,并行度咱们设置是不是有这么几个地方可以设置一个是不是那个配置文件?对吧,可以指定一个默认的并行度啊,那一次呢,咱们是不是可以在提交参数指定啊,啊,就比如说咱们刚才提交的这个。杠P。这个是不是指定的全局并行度为五啊,还有一个咱们是不是可以在代码里面去指定一个并行度啊。
01:04
对吧,呃,代码指定其中代码里面,咱们是不是可以它的执行环境里边。全局指定,还有一个什么代码里面的扇子单独指定啊,咱们设置并行度有这么四种方式。那么他们之间的优先级最高的是什么?算子?也就是说如果同时有很多种情况,以谁为准对吧?啊,对算子来说,如果算子单独设置了,那么以算子自己设置的并行度为准,那么如果代码里面啊,你的所谓的执行环境指定了,那么就以它为准,那后面两个。啊就不生效对吧,那如果你这两个都没设置提交参数指定,那么就以提交参数为准,比如说这个。那如果没指定,那它就按照配置文件默认配置的来,那么如果你没改过的话,默认应该是多少一啊,这是一个关于并行度的指定问题,所以呢,Flink是支持。
02:04
不同算子有不同的并行度的啊,这个大家应该是要明白,那接下来一个叫全局并行度的计算。也就是说当前这个任务我不想去说呢啊,每一个算子我单独去指定,那样太费劲太麻烦了,你粗略的来一个。给力变形度怎么给呢?很简单啊,首先你开发完一个作业之后啊,你先进行一个压测。那这个时候压测,你总得给个并行度呗,啊,那我们建议给个比较小的值啊,十以下,比如说你给个呃四啊五啊六啊都行,先随便给一个,你要测试嘛,测完之后啊。你看看有没有产生反压。对吧。产生反压,是不是说明至少某个地方出现的一个瓶颈处理不过来呀?啊,这个大家是可以想象得到的,那么如果说你比如说你给了一个五并行度,给个五啊,你会发现作业已经出现了反压。
03:01
啊,出现了反应,那么这个时候你去看一下出现反压的这个节点,或者说你直接看一下S。看SS,为什么呢?因为SS的数据是没有经过处理的,对吧,你看一下SS它的每一个子任务,比如说你并行度是五,是不是有五个子任务啊,哎,你看一下单个子任务它平均啊,就已经有反压的情况下每秒钟。它能往下游再发送多少条数据?这个是不是就代表当前你写的代码。呃,一个并行度的处理上限呢。对不对,就它的能力极限,它的天花板在哪里,我们找到天花板,好,那现在我们已经得到了单个并行度的处理上限之后呢,你在估算一下,也不是估算你在实际应用当中,你们公司里面企业,或者说你要处理的数据来源,它的一个总QPS。达到了多少量级,你应该是心中有数的吧,就比如说你们公司,比如说是做电商的。
04:01
呃。那么那么实际在你们实际生产环境里面,你们大概每秒钟是多大的数据量?当然不要用平均值,我建议的是用什么。高峰期的。因为咱们flink是实时流处理啊,你光看平均值不行,你要看他最高峰的时候能不能顶得住,对吧,他能顶得住,那这个资源就是够的,那举个例子啊,呃,比如说嗯,像咱们前面课程也介绍过,如果你是百万日活左右啊,这么一些不大不小的公司。那么大概一天是不是应该有1亿条数据对吧?呃,一条吧,咱们要一条来算,那平均你算出来是不是1000多条每秒啊。那如果是高峰是不是应该在呃2000~2万左右吧,应该差不多这个量级,每秒钟大概就是啊一两万左右。
05:02
那如果数据量的话,应该是一两兆。呃呃,也不是啊,大概就是两兆到20兆好行,咱不说那么多,举个例子,就比如说你的公司平均啊。呃,一秒钟。是一兆左右的数据量,那你们最高峰啊,最高峰你肯定也知道,你在企业里面干,你你不知道你们高峰时候什么数据量那。那就不合适了啊,这个你要心中有数的,那高峰的时候,比如说你们能达到20兆每秒。那这个时候你的总QPS是多少?就是20兆每秒。或者你换算成条数也行,你按照条数来算,比如说是2万条每秒。每秒啊,不是每分钟啊,高峰时期两万两万条每秒,那单个作业的并行度,比如说通过刚才咱们的方式,你看到source端在产生反压的情况下,平均呢。啊,就已经比如说是5000条每秒。
06:01
那么你可想而知。多大的并行度比较合适?全局并行度?你是不是直接拿你2万除以5000就行了,是不是四个并行度对吧?另外你再考虑一下预留一点对吧,你不要弄得刚刚好,你再预留,比如说我的建议是预留个1.2倍啊,0.2倍,也就是说四乘以1.2,那你这么一算,那好,那我并行度给个多少,给个五,这是不是就比较合适了?这个计算就相对比你瞎蒙更好,更精确一点,对吧?当然前提是你的代码逻辑已经没有什么优化了,不再做什么优化的情况下,你这么来考虑你的一个变形度啊,好,那问题有的人他就不懂,他们说怎么压测呀。怎么压测?说白了,压测一个原则是什么?让我的数据量,数据来源。是不是不断的灌数据啊,对吧,那不断的灌数据,你说你要等到真正高峰时候再去测,那也不合适,你可以怎么自己造数据啊。
07:04
造数据,造数据,比如说你数据源是卡不卡,你可以造的数据写入到哪里呢?卡不卡。哎,然后呢,你的flink程序去消费卡不卡那不就得了吗?那如果你造数据性能不行,你可以什么。这个你先不打通嘛。你先使劲的往卡夫卡里面写数据。啊,比如说你写了一天两天三天的数据,一天够了,咱们实时程序你要积压多久对吧,积压几个小时已经比较过分了,好那么或者说你积压几个小时的数据量。然后呢,你将你的flink程序诶启动起来,开始消费卡普卡,这个时候对flink来讲,是不是已经要开始处理这个大量积压的数据啊,很容易就会打到他的一个反压状态,这么来测就行了。至于怎么造数据呢?你可以拿自己生产环境的数据,对吧?你把它拿一天的,或者拿几个小时的数据,一定要拿过来到测试环境,呃,脱,当然要记得脱敏啊,咱们数据不要瞎整,或者说你可以根据你们自个儿的业务数据,呃,每条数据的一个结构,你自己写个程序造数据,或者利用一些工具。
08:13
根据你的一些业务规则啊,去生成啊,就你你是什么格式就生成什么格式的数据就可以了,咱们后面也会简单介绍一下啊,现在先不聊,大概知道这么一个原则跟思想压测。另外就是一个细节,就我刚才谈到你要测的这个QBS,你要用高峰期的来测,对吧,你这个任务你要顶得住高峰。那才行,那记得富余一点,算出来的变形度,你再乘以1.2。对吧,就上面这个公式算出来之后,你再乘以1.2,这个就比较合适好。
我来说两句