00:00
哎,那咱们现在讲一讲啊,就是我们卡夫卡在这个实际的这个使用过程当中,有几个咱们需要考虑的问题啊,主要问题是什么呢?首先第一个啊,呃,第一步就是打卡不卡集群,那卡卡机群咱们选几台节点呢?啊咱们嗯前面讲,包括咱们刚才上来就是三台节点一一台一个,对吧?啊那实际上生产环境下呢,我们假如说我一个集群有十台节点,有20台节点,你也上来之后,每一台节点上面都部署一个卡夫卡吗?那不一定对吧,那就不一定了,那所以说这个卡夫卡集群节点的个数,咱们需要考虑一下怎么去分配,那第二一个呢,我们在使用卡不卡的时候呢,我是不是需要去创建topic呀,对不对,那我topic我需要创建几个。啊,这第一个问题,那第二个问题呢,每个卡卡topic啊,我里边是不是得设置分区数,得设置副本数啊,那分区我设计一个啊,我副本又设计一个啊这个咱们之前诶都是直接上来就就就给他搞定了,也没有考虑过,其实这个都需要去呃计算的啊,都要计算的好,那接下来咱们把这个问题来说一下啊来我们先看第一个问题就是卡不卡这个机器的这个数量计算指的就是卡不卡集群规模啊,就是打几台节点要几个broker啊好,我们这儿有一个公计算公式啊来看一下呃,卡普卡机器数量呢,我们一般情况下呀,我们这么去算啊,哎,两倍的峰值生产速度乘以副本数,再除个100,然后再加上一。
01:27
啊,这是我们的一个经验公式啊,两倍的峰值生产速度加上乘以一个负本数,然后再除以100加个一,然后大家主要是重点关注一下什么啊。所谓的峰值生产速度是什么意思?啊啊对,大家想想啊,我们假如说我们现在我们那个往卡夫卡里边写数据,咱们主要写什么呀,其实。其实主要写的是咱们那个用行日志对不对,我flow我要采集运行日志,它会不断的往卡夫卡里边写数据,对不对,但是我们往卡夫卡里边写数据的话呢,我肯定不是说这个写的速率非常均匀,老是这样,肯定不是对不对,因为咱们这个,呃,我那个就是咱们业务系统,我那个访问啊,实际上是有高峰期的对不对,咱们举例子啊,你比如说这种啊,假如说那种呃,相亲网站对不对,相亲晚上可能晚上,哎,咱们这个哎属于高峰对吧?啊对不对,相亲网站啊,大家都都都装纯是吧,假如相亲网站那可能晚上是高峰对不对,那别的呢,你比如说这个,呃,咱们抢票这种软件抢软件,可能这个早上可能是高峰期,对吧?那一般我早上八点或十点开始放票,那时候应该是高峰期,对不对,也就是说你不懂网件呢,不同软件实际上是有高峰期的,这个所谓的峰值生产速度就是诶你这个最高的那个生产速度是多少啊,就是这意思啊,就是都有高峰期的啊好。
02:50
那这个峰值生产素咱们怎么拿到啊拿到。这这压力测试你得不到啊,压力测试你只能是自己模拟一个速度对不对,你怎么能拿到真实的峰值产速度,这个得跟公司哎那边去要这个数据啊,得说哎咱们这边,呃,我这个数据的这个峰值是多少啊,那得跟他们要才行啊,这个你自己是没没有办法,这个通过压力测试没法测出来的啊,啊也是需要拿到先拿到这个峰值生产速度,需要跟咱们公司里边相关人员去要这个值啊完了之后呢,是下边这个副本数,这个副本数呢,指的就是咱们创建topic的时候,你指定的那个副本数啊,这个副本数呢,其实没有什么这个计算公式,副本数呢,我们副本是干什么用的,就是用来做容灾的,对吧?啊,如果做容灾,做容灾一般情况下,咱们设成两个或者三个都可以啊,那还是设成两个的更多一些啊,两个居多啊,两个居多啊,那假如咱们这呢,就省成两个啊,省两个完了之后呢,再哎,除以一个100哎,然后呢,再哎,后续再加个一啊这是一个定项公式啊,然后大家呢,需要去注意一下啊,就是。
03:56
这个所谓的峰值生产速度,它的单位你必须得保证,哎,是兆每秒,是兆每秒,因为你这个单位要搞错了,那你这个结果是不是肯定就差远了呀,对,单位不能搞错啊,是兆每秒啊,那接下来咱们举一个小例子啊,比如说我们现在咱们公司里边,哎,这个峰值生产速度是50兆每秒,然后建topic米的时候呢,咱们的副本数设成二了啊设成二了,那这样一来的话,咱就把它带到公式里啊,就二乘以50乘二除以100啊,再加个一就是三台。
04:26
啊,就是这么来啊,这么来,然后其实大家呃,可以大致这样去啊记去记一下一个范围啊,就是一般一般情况下,咱们一个小公司,比如说有一个呃十台的节点啊,十台节点,那一般情况下,咱们这个卡夫卡集群,它的数量呢,也就是三到五台啊,基本上就够了啊,基本上就这样的一个范围,三到五台啊三到五台行,那大家把这个记住就行啊,三到五台。行,那这个完了之后呢,相当于我们就已经解决了一个问题了,就是我们卡不卡当中这个集群的个数啊,集群节点的个数啊,咱们用这个去算一下啊,好,然后大致范围呢,就是三到五台,那接下来往下看啊,下边是我们一个项目经验之卡夫卡分区数计算啊,那这个分区数呢,咱们先不算,刚才我们提到三个问题啊,就是topic,那有几个分区,有几个副本,有几个对吧?咱们先说topic,那topic咱们怎么去算啊。
05:21
Topic其实没不用去算,那我们一般topic是用来干什么呀,就是我一个topic,就是我的一类数据。啊,对不对啊,就是什么叫一类啊,比如说我用行日志啊,那对不对,我我我都要往一个topicb里里边去放,那我可能还需要去监控一些咱们的什么no搜Q数据库,去监控一些这个MYSQL数据库,那假如说也要往卡夫卡里放,那是不是我再来一个topic呀,对不对,那也就是说你的数据有多少种类,那你这边呢,你就诶有几个topic格就行了啊是这样的啊,所以它其实诶很简单,你不用去算啊,这很简单,那接下来我们说这个分区,把这个分区呢,相对来说还是比较重要的啊,那假如我现在要设一个哎,要创建一个topic,那到底几个分区呢?那这边咱们怎么算啊来。
06:08
嗯,看一下咱们这这几个步骤啊,在其上有一个这个测试的步骤,我们来看一下,那首先我们要想去算这个分区的时候呢,咱们需要先去创建一个只有一个分区的topic。只有一个分区的topic啊,啊,只有一个分区啊,这为什么要只有一个分区,一会咱再解释啊,一个分区完事之后呢,去测试一下这个topic生产者的吞吐量和消费者的吞吐量,诶那这俩东西怎么测,大家知道不知道?知道吧,是不是用咱们刚才讲的那个两个测试脚本去测呀,我们能拿到生产者的吞吐量,能拿到消费者的吞吐量,咱们都能拿到啊,是这样的,两个两个东西完了之后,接下来干什么呢?看一下。哎,假设它们的值分别是啊TP和TCTP指的就是producer的吞吐量,TC呢指的就是consumer的吞吐量,单位呢是兆B啊照兆B每秒,兆每秒,咱们这个得到的结果是不是直接就是兆每秒啊,对吧,可以直接拿过来啊,完了之后接着往下走。
07:13
假设啊,那咱们这个系统目标的吞吐量是TT,假如说我需要保证卡布卡呢,我的吞吐量得达到,比如说达到多少呢?达到100兆每秒啊,这是我所期望的吞吐量啊,吞吐量也就是说我写哎,然后我这边读呢,哎,我能保证这个吞吐量是100兆每秒啊,我需要这是我期望的值啊,希望的值,然后咱就可以怎么做了呢?那咱们一个topic的分区数呢,就得这么去算啊,用TTTT就是你期望的那个值对吧?然后呢,去除以嗯,生产者和消费者吞吐量的那个最小值。啊,最小值相当于以谁为准啊,是不是以那个小的为准啊,对不对,那那这个咱们举个例子啊,例如比如说我生产者的吞吐量是哎,20兆每秒啊,是二兆每秒,然后我消费者吞吐量是多少呢?是50兆每秒,那我期望的吞吐量是100兆每秒啊,那这时候咱们应该怎么算,是不是用100去除以它俩的一个最小值,它俩最小值是20呗,20我就需要五个分区。
08:18
啊,就五圈五个分区,那实际上这边它就是这么去算的啊这么去算的,那现在大家知不知道为什么咱们这个topic一定得有只有一个分区了,就咱们测试的这个。为什么只要有一个分区啊?你一个分区是不是相当于你去测这个所谓的生产者和消费者吞吐量的时候,你测的就是什么呀,你测的就是一个分区的吞吐量,对不对啊,那所以说那咱们用7万存储量去除以一个分区的存储量,就能得到分区数啊,其实就这个意思啊,就这个意思啊,啊那咱们把这个能看懂就可以,那能看懂就可以,然后这里边呢,我们需要用到的知识点就是咱们得会去测这个生产者和消费者的吞吐量啊,完了之后呢,咱们得知道这个公式啊,得这个公式啊,就能得到咱们分区的个数啊,那一般情况下,咱们一个分区呢,差不多就是呃三到十个吧,那基本上就在这个范围之内啊,不要太大啊,不要太大啊,分区多了也不是好事啊,分区多了也不是好事啊好,那咱把这个呃视频录一下。
我来说两句