背景:QPS = 200万/s 全天不间断
让高峰期QPS控制在集群能承载的总QPS的30%左右是比较安全的策略
即应设计集群承载QPS上限为600万~700万/s 才是安全的(也就是集群的处理能力是高峰期的3~4倍这个样子)
数据集群估算:
假设每条数据估算2kb大小,2KB转换为G=2/1024/1024,即每条数据约1.9073486328125e-6GB
存储估算:
每天数据增量:2000000*24*60*60=172,800,000,000条/天
172,800,000,000*(2/1024/1024)=329,589.84375GB/天=321.8650817871094TB/天=0.314321368932724PB/天
0.314321368932724*3*365PB/年=344.1818989813328PB/年
一般集群存储不超过总存储大小的80%,所以一年总存储大小如下:
344.1818989813328PB/0.8=430.227373726666PB/年,
按每个节点存储10PB的数量来算,
430.227373726666PB/10PB=43.0227373726666 大概需要44个节点来存储一年的数据
内存估算:
内存估算,内存的估算其实这个是没有绝对标准,有的公司使用Flink处理物联网数据,只用了几台不到10G的机器就可以处理。所以内存的估算其实不同的组件,执行多少任务,多少实时任务,离线任务、算法模型等,区别比较大
一般实时任务占用的资源都是固定的,可以根据业务个数估算。离线任务可以根据ETL任务数和任务资源配置情况估算,计算资源离线和实时同时启用的时候不能超过资源90%
实时任务资源占用需要小于50%,实时任务2000000/s的QPS,一分钟窗口2000000*60*(2/1024/1024)=228.9G,有的设置5分钟窗口,那么大概是1144.4G。
按照不超过50%来计算,需要1144.4G/0.5=2,288.8G(五分钟窗口计算); 228.9G/0.5=457.8G(一分钟窗口计算)
2,288.8G/44=52G/台(或457.8G/44=10.40G/台)
CPU估算:
CPU和内存比例,一般为1:2或者1:4,当然具体需要看有多少线程
16核的CPU一般能HOLD住一两百个线程的工作,如果一次计算量过大建议使用更大核的CPU 如32 cpu core,
支持超线程,SSE4.2指令
综上建议配置:
Nodes 44台
Mem 56G
CPU 32 cpu core,支持sse4.2指令