Kafka - 08容量评估
作者:互联网
Kafka - 08容量评估
一、需求分析
评估要求: 每天的请求量、 每条消息的大小; 参考二八原则
- 假设有每天10亿请求
- 凌晨0-8点请求量较小,其余16小时处理80%的请求。 而 16小时的20%时间处理 8亿请求的80%数据。
- 高峰时间段 QPS = (8亿 * 80%) / (16 * 20%) = 5.5万。
- 每条数据50kb, 每天数据量 10亿 * 50kb = 46T。
- 分区的副本数为2, 则存储量为 46T *2 = 92T。
- 如果数据保存的时间周期为3天, 则需要磁盘空间为 92T * 3 = 276T。
二、资源评估
2.1 服务器数量
- 物理机还是虚拟机。 生产环境使用物理机。
- 按照高峰值的4倍评估, 集群处理20万QPS。 5台物理机,每台承受4万请求。
2.2 磁盘选择
- SSD固态硬盘还是机械硬盘。 Kafka顺序写,使用普通机械硬盘即可。
- 每台服务器的硬盘数量: 5台机器存储276T,每台60T左右。 每台服务器 11个 7TB 的SAS硬盘。
2.3 内存评估
- Kafka读写数据,都是基于os cache。分配尽可能多内存给os cache。
- Kafka核心代码是scala写,客户端代码是java写的,都是基于jvm。预留内存给JVM。
- Kafka没有把很多数据结构都放在JVM内存中,配置10G足够。
- 假设有 100个topic, 100 topic * 5 patition * 2 replica = 1000 partitions。
- 保证1000 个partition 最新的log数据文件 都在内存中, 1000 * 1G = 1000G。
- 只需要保证 log数据的 25%最新数据在内存里,则需要内存250G。
- 每台服务器 50G内存 存储最新数据。
- 服务器总内存: 10G(Kafka服务) + 50G(os cache) + 4G(操作系统) = 64G。
- 选择64GB 或者 128GB内存。
2.4 CPU压力
- 计算服务里有多少线程。Kafka服务启动后,一般会有一百多个线程。
- Acceptor线程 1个
- processor线程 3 6~9个
- 处理请求线程 8个 32个线程
- 定期清理线程、拉取数据线程、定期检查ISR列表的线程等。
- cpu core = 4个, 几十个线程会将CPU跑满。
- cpu core = 8个, 可以轻松支持几十个线程。
- 16个cpu core 或 32个cpu core, 支持 100-200个线程。
2.5 网络需求
- 服务器:千兆网卡(1Gbits/s), 万兆网卡(10Gbits/s)
- 峰值5.5万QPS, 5台服务器, 每台 1万 * 50KB = 488MB, 每台接收500M数据。
- 加上副本数据拉取同步, 488M * 2 = 976MB/s = 7.8Gbits/s。
- 选择万兆网卡。
标签:容量,08,Kafka,线程,内存,服务器,硬盘,每台 来源: https://www.cnblogs.com/kingdomer/p/16462561.html