00:00
好,接下来我们来看一下第一张卡法硬件的一个选择,那这里面呢,我们假设一个场景啊啊后面呢,我们会未来会做项目,那我们的项目呢,呃,是以这个100万日活啊,每天100万的一个用户来访问,同时呢,每人每天呢,呃,大概产生100条日志左右啊这样呢,给大家去评估这个数据量啊,那这里面每人每天产生100条日志,呃,它是大还是小呢?啊其实啊,如果你刚来到这个公司的时候,一般呢,它前期买点啊,产生的数据量呢,不是特别大啊,一般呢,比如说20条啊一天,那随着这个公司业务的发展啊,那这个条数呢,会越来越多,叭,如说达到100条之后呢,200条甚至还会更多,那这里面我取的是这个中间值啊,每人每天差不多100条日志左右啊,基于这个背景呢,我们去评估一下卡卡台数,要买多少台啊。那我们打开这个啊。大家简单记一下,这个呢,就是生产调优。硬件选择。第一个哎,我们的假设的背景呢,是100万日活。
01:05
日活的含义呢,就是每天来到这个网站进行登录啊,或者观看,浏览了一些网站页面啊,这个呢就算活跃了哈,那每人每天产生的日志呢,是100条好。写详细点。每人。每天产生日志啊,100条左右,那好,那一天总共产生的日志多少条呢?那总共产生的是不是100万日活乘以100条啊,也就等于1亿条啊。一条日制,那这个属于什么规模的一个公司呢,一般呢,是属于一个中型或者偏小一点。哎,偏小一点的这个公司啊,那行,那这么一个规模的公司,那下面我们来评估一下它的硬件的一个选择,那首先我们要计算一下什么呢?哎,计算一下它的一个每秒钟会处理多少条日志。比如说处理数据的速度。
02:01
那这个速度怎么算啊,我们一天是1亿条。啊,那你一天一条一天是多少小时呢?一天是24小时,那一小时是3600秒啊这样,那你这样除下来啊,像这种的一般就口算就可以了哈,1150条。每秒是吧,你自己算一下啊,肯定应该差不多少啊,那就说每秒钟呢,是会产生1150条日志打到这个卡瓦集群当中啊。那么问题来了,那一条日志多大呢?一条日志一条日志啊,通常在企业里面呢,它是0.5K到这个2K之间,哎,这是比较标准的啊,当然有个别公司呢,它不是特别标准啊,有这个两兆的,甚至有200兆的一条日志,那这有点夸张了哈,正常情况下呢是哎取1K呢,是比较标准的啊,比如说你刚来到公司的时候啊,这里面记录的信息不是特别多,哎,0.5K,随着记录的信息越多,哎1K,然后之后2K再逐渐的往上进行一个升加啊,那这里面我就按1K进行计算好。
03:03
那么这呢,上面处理日志的这个速度啊,是每秒钟1150条,那要转换成对应的这个兆呢,那就是1150。哎,我是不是一条日子乘以1K啊,哎,我乘以1K,然后呢,再除以这个秒,那这样算下来呢,哎,差不多一兆每秒左右,知道吗?哎,这平均好,那这个平均值啊,对于我们这个开发呢,其实意义不大啊,我们一般算的呢,需要什么呢?需要一个峰峰值啊,也说高峰。对吧,哎,你像这个每天晚上呃,这个凌晨嗯到八点这块呢,产生的数据量呢,肯定是要少一些的,哎,那这个数据量不是特别大,那一般什么时候这个呃数据量比较大呀,如果是一个电商行业啊,电商行业的话,早上你买东西是不是相对来说啊,要少一点啊啊一般的挤地铁啊,这个不便于买东西,那上午上班你也不好意思买啊,中午的时候。有一个小高峰。
04:00
哎,会买一些东西,那到了下午呢,上班还不方便买啊,然后667点钟呢,哎是坐这个地铁公交啊,也不太方便,到什么时候呢?哎到了这个晚上对吧,八点到这个,呃,12点是吧?哎顺荣老师躺在床上,哎一看,哎呀今天晚上要去三里屯上班,对你的手指啊面膜啊啥的这个没有到位,那这时候呢,他就赶紧下单,那就导致网络上的一个红峰,那红峰的话呢,它这个数据量能达到多少呢?诶能达到啊,是平均值的一个20倍左右。哎,平均值的20倍,那你平均值是多少啊,平均值的话我们是一兆每秒知道吗?一兆每秒你乘以20倍的话,那峰值的情况能达到20兆每秒啊,这是属于一个高峰期,那极个别情况下啊,其实可以达到,比如说啊,这个40兆每秒也是有可能的,比如说赶上双11啊,或者618啊这种情况啊。行,那就按这个去估,我们以20兆每秒啊就行了,那下面再往下看,这是高峰期啊,高峰期这么多,那下面基于这个高峰期,我们来评估一下我们要买多少台服务器呢。
05:03
下问题。购买。多少台服务器,那这里面我们有一个经验公式啊,什么样的经验公式呢?呃,是咱们一个,呃,企业兼职老师,他在大厂里面,公司内部使用的一个经验公式就是服务器台数等于什么呢?哎,等于二。乘以,这里面叫生产者峰值。生产树立。乘以你的副本数。啊,再除以100。啊,然后加一,哎,这样就能算出来对应的服务器台数,那好,那下面呢,我们就来算一下,那这里面是二。乘以生产者峰值生产数列是多少呢?是20兆每秒。那副本数呢是二。乘以两个。那我们出100。哎,除以100,然后再加一啊这样去算,那这样算下来呢,呃,其实呢,这个20啊啊,乘以这个二等于四啊,四除以100的话呢,这个除不尽对不对,哎,出不开啊,我们不要算的小数啊,那我们就按一算啊,出不进的往上进,记住要往上进啊是一,那一的话呢,乘以这个二等于二啊二加一的话就是三台,你说三台卡不卡呢就够了啊,通常呢,我们在企业里面,呃,大多数公司都会采用这个三台服务器啊,就足够用了啊,除非你赶上双11或者618啊这种呢,呃,需要这个生产者这个峰值算速率啊,非常非常高啊,那这时候呢,你把这个台数呢,可以往上进行一个增加啊好,那这里面选择三台。
06:35
那下面我们来看另一个选择,那磁盘的选择。比如说我们未来要买服务器的时候,那个磁盘怎么选呢?那大家回忆一下卡夫卡的一个读写速度是按,那大家回忆一下卡夫卡是按照什么进行读写啊。哎,卡普卡呢,是按照顺序读写。顺序读写是这样吗?那顺序读写的话,那机械硬盘和固态硬盘它的顺序读写速度怎么样呢?机械。
07:06
硬盘和固态。硬盘它们的顺序读写速度差不多,哎,顺序读写速度差不多。那差不多的话,那我就没有必要花这个冤枉钱了,因为固态硬盘大家都知道,它的这个价格是不是要贵一些啊,要贵一些,所以说没有必要就买这个金硬盘就可以了啊,那什么情况下我们可以买考虑买固态硬盘呢?如果你是随机读写,那么这个固态硬盘要比这个基硬盘啊,有非常大的一个优势啊,所以说卡布卡呢,这里面啊,它顺序读写没有太大的优势啊,直接选择金星盘,那那选择金星盘,那金星盘我买多大呢?对吧,买多大的基星盘合适啊,按照这里面又涉及到一个计算了啊,比如说我们是1亿条日志是吧,那一条日志呢是1K,那这样算下来一天呢,差不多是100G左右啊,这也是约等的哈,那我一天是100g 100G的数据量我要乘以几个副本啊,哎,我说两个副本啊,两个副本啊,那两个副本我保存多久呢?
08:05
它默认是保存七天,但是通常我们在生产环境当中啊,一般呢,就保存三天啊,就差不多了啊,没有必要保存七天,当然了,你要保存七天的话,那你这块呢,就剩一个七好吧,啊行,那大家买东西会买这个,呃,买到这个峰值吗?比如说我这里面用到了啊,这是100乘以二等于200 200单乘以三的话,600,我直接就买600G的硬盘吗?不会,那这里面是不是留点余量啊啊一般呢,我们留30%的预量,那我就除以一个0.7啊,那约等于呢,是1T左右。哎,买1T的硬盘就够了啊,那这里面建议呢,三台服务器总的一个硬盘大小啊,1T建议。三台服务器。总的磁盘。大小,哎,大于1T就可以了。那这个还是非常容易的啊,非常容易满足啊,一般咱们的服务器没有说这个小于1T的啊,一般都是8T起步,8T的啊,16T的,32T的,48T的,其实现在的还有这个96T的啊,这个呃,反正磁盘呃,存储容量越多,那这个价格呢,相对来说越贵一些啊,那这边再来看另一个呢,就是对应的叫内存的一个选择。
09:14
内存选择,那这个内存我选多大呢?内存内存的话这里面要注意了啊,卡巴的内存主要分两部分。一个呢是叫卡卡的多内存。内存啊,等于对应内存。好,加上液缓醇。那这个堆内存啊,是卡不卡,它里面可以进行配置,比如说卡卡内部配置。还记得咱们在讲这个卡法ego啊,对应的监控软件的时候,我们就将默认的卡法1G的内存是不是修改成2G了,你要修改对内存的话,就改这个值就可以了啊,那同时呢,那个页缓存是什么呢?哎,页缓存呢是服务器的内存。服务器内存,比如说这是一台服务器。
10:01
那服务器里面安装上了,这个卡不卡,那卡不卡需要的内存,这个是对应内存。那好,那卡不卡在它是不是有一部分数据是在页缓存里面帮我缓存的,那你其他这地方啊,再放一些其他的内存。哎,用来存储卡不卡的页缓存里面的数据啊就行了哈,行,那这两部分内存我们怎么计算呢?哎,首先来看一下这个对应内存。对于内存,对于内存呢,我先给大家一个结论,呃,一般情况下呢,我生长环境当中呢啊,可以给他配置这个十到15G啊左右。啊就可以了啊啊这么多,那要改这个值的话,就是带给大家回忆一下,进入到这个B目录。啊,VM卡不卡serve start在这里面。这个位置。看到了吗?哎,之前呢,默认的是1G内存,现在呢,我们已经给它修改成2G了,那生产环境当中,如果你的数据量啊非常非常大的情况下,那这块呢,就是给10G到15G,那至于给10G还是15G,一会儿呢教大家啊进行一个测试啊好,那下面我们就来看一下怎么来查看好吧,对应的一个内存使用情况,那这里面呢,给大家提供了对应的这个参数啊内存。
11:09
这个呢,你可以查看一下这个卡法的ZC情况啊,这些情况,那这些情况呢,把这个拿过来杠CC。这些都拿过来吧。嗯,我先接下查看一下当前卡法进程。卡法进程的这个进程号呢是2732,那就改成2732啊这样这个呢是查看卡法他这C了多少次执行。好看完了,看完之后啊,主要看谁呢?看这个值年轻代的一个对应内存GC次数看到吗?啊一共呢,GC的36次,那这个是完全可以接受的,那网上呢,其实有个别公司我看呃,这个执行了这个70多万次。啊,那这个,呃,如果说你这是几十次的话,那就不用修改对应的这个内存啊。呃,同时呢,大家可以真正的去查看一下你这个内存的使用率,那使用率的话呢,看谁呢,看这个。
12:03
看到没,嗯。然后加上对应的进程号2732好走。那这里面就能够查看对应的你的对应内存使用情况,这呢啊完了,总共呢,对应内存大小是两个G,那现在使用多少了?哎,使用的是19%啊,那这个还好对吧?啊,还够用,那如果你已经达到这个70%几以上了,那这时候你要把这个内存进行一个调高啊,所以说你是配10G还是15G,那看这个值对吧?来看这个值的一个使用情况,OK吧?哎,那这个呢,就不多说了啊。啊,这是查看,那下面呢,还有一个页缓存,那这个液缓存我配置多大呢?哎,它是这样。来画一下。叶欢春。还记得咱们页缓存里面,哎,是不是存储数据的叫segment s e。S2用S格进行存储数据,那每一个S格的大小默认是不是一个G啊?那如果是一个G的话,我们希望数据诶如果都能在内存里面,那数据完美了,比如说这一个G的三个门的数据都在一缓存里面,那外部的一个读写速度,那会非常非踌,但是呢,没有必要啊,那太浪费内存了啊,一般呢,我会将1亿内存多少呢?它的25%放到这个液缓存里面,那这样呢,就已经是非常非常优秀了啊,放到这里面。
13:23
那大家回忆一下啊,我的S格门呢,是不是取决于分区啊,哎,每一个分区下是不存储了对应的多个S格呢?好,那如果说我这是分区数。哎,分级数。分区数是十个,那我是不是得分区数十乘以对应的这个S呢,那就保证哎,我每个分区这个分区啊,一般就是这个leader呗。Leader,那leader比如说十个分区,哎,那我里每一个下面都有一个segment呢,那S格大小最新的那个segment呢,我让它25%的数据缓存到内存当中,那这样呢,效率呢就比较高了啊,这样进行一个计算啊,那假如说我们这个集群呢,就十个分区,那十个分区参与一个G,再参与这个,呃,25%,那这个等于多少啊,乘与文是不是这个2.5g左右啊啊2.5g,那2.5g的话,我们是有三台服务器呢。
14:11
对吧,那你基金台数呢,是三台,那我们就除以对应的三。除以三,那这个除以三的话,等于三八二十四啊,也就是我们约等于1G吧啊,多给一点啊,我们呢,就是每台服务器再多给1G内存,那这样总共算下来我们一台服务器要给他多少内存呢?一台服务器。啊,一台服务器那也是10G,加上对应的液缓存一个G,哎那就够了,比如说你只要这台服务器不低于哎11G,哎,那就妥妥的够我们进行一个使用啊好,那下面再来一个呢,就是对应的什么选择呢?对应的就是这个CPU的一个选择。啊,C选择C边选择啊,这里面涉及到几个线程,大家看一下涉及到这么几个。这么三个线程,那这一个线程呢,是负责呀,在卡布集群当中写磁盘的,对吧,你数据过来之后啊,需要往上面写啊,其实写到液缓存那这块呢,它默认的这个值呢,IO线程数呢是八啊是八好,那另一个呢,是你这个leader收到数据之后,是不是涉及到一个follow跟它进行同步啊,那这里面副本拉取的线程数呢,也是一个,这都是默认值啊,那还有一个呢,就是服务器与服务器之间进行数据的一个传输,那么这个进程是多少呢?哎,进程数呢是三啊这些默认值那好。
15:29
那我到底要配置多少个这个CPU线程呢?其实大家要注意啊,卡巴里面非常啊占用这个线程数啊,除了这几个线程之外,西式卡法还有很多线程,比如说各种定时任务啊,什么三秒心跳啊,超时啊啊,超过这个45秒啊,超过这个呃五分钟啊啊等等很多很多线程数啊,只不过呢,它每一个任务啊啊都不是那么特别长啊,最耗时间呢,就主要是这三个啊好,那如果说我是这个32G啊CPU,那这时候怎么算呢?那这个如果是32这个CPU核数的话,我建议大家分出来啊,24加八。
16:05
这24呢,呃,真正的给这三个线程进行一个使用啊,其他八个核呢啊,用于其他线程的一个使用,那怎么分啊,如果是,呃,你这台服务器是32核,这个值要改一下,改成多少,它呢是占整个24的一个50%,那你就给它到12好,那下一个呢,这个副本拉取哎,占你剩下50%,也就说这里面还剩12,它的三分之一再乘以1/3,那就是四核啊,他给四上面呢,给这个对应的12。那下面这个三呢,三这给多少啊哎,三这个给2/3,那就对应的是八啊这样,然后其他呢,整体这个服务器呢,再预留八个CPU核数,那这样呢,你这个卡法跑起来啊,才不会这个出现卡顿啊啊这种啊效率呢会比较高啊,尽可能的多给他一些CPU核数,OK。记一下啊,那这个呢是32盒。建议。第六个是网络。那网络怎么选择呢?记住咱们网络呀,是不是有一个数据的峰峰值啊,传递过来的数据是不是20兆每秒啊,啊,极端情况能达到40兆每秒啊这么多,那我买多大的一个带宽呢?啊,也就说网络一带宽,那网络带宽呢,这里面也同学说,那买百兆的带宽不就够了吗?那注意一下啊,咱们说的这个百兆的带宽,往往它的单位呢,叫100兆比特啊,是比特啊,咱们说这个呢,是啊,这个是按字节进行一个计算的,举个例子,你看它这里面的最小单位是比特,那十兆每秒对应的单位呢,是BAT啊字节,那么一个字节是不是等于八比特呀,那好,那也说100兆BPS,就咱们说的网络带宽,如果是百兆带宽,那你除以八的话,其实就是12.5兆每秒。
17:45
啊,一定要注意啊,那千兆带宽的话呢,也是125兆。每秒啊这样一个情况,那现在呢,咱们是数据的传输啊,是20兆每秒,那我们一定得买这种千兆带宽啊就可以了啊买千兆带宽行,那这是整个这个卡巴硬件的一个选择啊,那这块呢,大家一定要会啊,在生产环境当中啊,如何进行一个选择。
我来说两句