美文网首页
亿级Kafka消息中台建设估算

亿级Kafka消息中台建设估算

作者: 滨岩 | 来源:发表于2020-10-11 08:19 被阅读0次

kafka集群的目标:

亿级消息处理能力,每天处理1亿的请求,平均每秒1000-2000的请求,高峰每秒抗住6000并发

QPS估算

二八法则:一天24小时,凌晨12点到凌晨8点这8个小时几乎是没有数据。根据二八法则80%的数据会在白天8点和晚上12点之前16个小时产生,1亿80=8千万 ,也就是8千万的数据会在16个小时产生,而且8千万数据的80%(6400万)会在16个小时的20%时间(3小时)涌入。
QPS计算公式=6400万/(3
60*60)=6000,故高峰期kafka集群要抗住每秒6千的并发

高峰期QPS控制在集群能承载的总QPS的1/3,所以kafka集群承载的总QPS应该是6千*3=1万8的并发

硬盘存储

每天1亿的数据,每个请求10kb,也就是1亿10kb 将近1T的数据,如果kafka有2个副本,1T2=2T,保留最近7天的数据,需要2T*7=14T的空间

再流程10%的索引数据的存储空间,14T*10% ;

磁盘数量

至少3个磁盘

log_dirs=/data1,/data2,/data3

磁盘类型

SSD 是固态硬盘,比机械硬盘要快, SSD的快主要是磁盘随机读写,比较贵
kafka是顺序写,机械硬盘顺序写的性能比内存随机读写的性能要快,所以kafka集群使用机械硬盘也能满足

内存角度

kafka自身的jvm是用不了过多堆内存,kafka的零拷贝机制,kafka 的快速的主要原因是利用了内核缓冲区的OScache,这样设计是规避掉用jvm对象来保存数据,很多数据结构并不在jvm内部使用,而是在OSCache内部,所以kafka jvm配置5G 就够了

一般情况下分区数和机器数是倍数关系的,比如5台kafka机器,那么分区数可以是5或者10
假如生产线上的topic个数是100个 , 每个topic的分区数是5 , 那么总共的分区数是500
正常情况下,kafka存储数据的.log文件默认大小是1G , 每个分区的最新.log文件肯定默认大小就是1G
现在有 500个分区,那么饱和状态下就是 : 如果有500G的内存,完全是可以的;
但是没必要这样 , 因为消费者去kafka拉取数据,绝对是拉取上一次offset位置的数据,也就是保守估计,预留原来的25%的内存就可以的
所以,原来是500G内存 * 25% = 75G内存;
5台机器,相当于每台机器给OSCache预留25G内存 , 同时kafka server的jvm在预留 5G的-Xmx和-Xms
最后得出,每台机器给30G内存就可以

CPU

kafka 配置中有如下几个配置

网络线程,可以配大一点

# The number of threads that the server uses for receiving requests from the network and sending responses to the network
num.network.threads=3

IO线程池
# The number of threads that the server uses for processing requests, which may include disk I/O
num.io.threads=8

我们希望生产速度和处理数据最好一致,比如最好一个CPU处理2个队列,当然核数越多越好,比如16核/32核

网卡角度

像kafka这种通过网络大量进行数据传输的消息引擎,带宽很容易成为瓶颈,带宽也是稀缺资源,尤其是跨数据中心,或者跨机房的kafka。

kafka集群之间,broker和broker之间是会做数据同步的,因为leader要同步数据到follwer上面去,所以不同服务器之间的传输比较频繁,根据之前测算的qps计算,每秒有6000个请求,每个请求10kb,
大概是60M,然后还有副本,所以要有两倍,于是大概是就是120M/s的网路带宽。

成本角度

消息队列kafka 版

https://common-buy.aliyun.com/?commodityCode=alikafka_pre&spm=5176.13909345.0.0.28657df1Voli28#/buy

华北机房 读流量150MB/s,写流量峰值30MB/s SSD 磁盘

1.4T 消息保留7天 topics上限:50 价格:14,470.00/月

image.png

消息队列 RocketMQ 版
https://www.aliyun.com/product/rocketmq?spm=5176.13909345.0.0.28657df1Voli28

华北机房 tps峰值:1万条/秒 topic上限:50 存储空间1.4T

价格:3万4/每月

image.png

配置建议

5台物理机

硬盘: 机械硬盘

内存:32G/64G,jvm分配5G,剩余的给os cache

cpu:16核/32核

网络:千兆网路/万兆网络

相关文章

网友评论

      本文标题:亿级Kafka消息中台建设估算

      本文链接:https://www.haomeiwen.com/subject/xvwspktx.html