假设前提条件:
1.系统用户日活数100万
2.每个用户产生的行为数据为100条
3.每条数据大小为1kb
4.kafka的副本数量为2个
5.kafka数据保存时间为3天
6.系统用户活跃时间为09:00-24:00,也就是16个小时
相关数据计算:
1.计算总数据量大小
100万 * 100条 * 1kb = 100G
2.计算平均访问量
1GB / 16h / 3600s = 1736kb/s 略等于 2m/s
3.计算访问峰值,按业界经验,峰值一般为平均值的20~30倍,即:
峰值 = 2m/s * (20 ~ 30) = 40m/s ~ 60m/s
4.计算服务器数量,同样按照业界公式:服务器数量 = 2 * (副本数 * 峰值 / 100) + 1,即:
服务器数量 = 2 * (2 * 60 / 100) + 1 = 3.4 略等于4台,此处按最大峰值计算
5.计算每台服务器磁盘大小
由于数据存在副本和保留天数,初步估算总数据量大小为:
初步估算总数据量 = 100G * 2 * 3 = 600G
注意!!由于服务器并不是所有的磁盘空间都用来给到kafka存储数据,一般会使用70%
给到kafka,所以在上一步的基础上还要计算,即:
总数据量 = 600G / 0.7 = 857G 略等于 1T
然后分摊到4台服务器上,即每台服务器磁盘大小为250G
6.计算每台服务器内存大小
由于副本数据主要是作为备份,真正参与读写的数据为:100G * 3(保留天数),
同样按照70%占比计算,即:
每台服务器内存大小 = 100G * 3 / 0.7 / 4 = 107G 略等于128G
以上计算方式仅供参考!