1、磁盘类型和容量规划

1.1 磁盘类型

  • 机械磁盘(HDD) 一般机械磁盘寻道时间是毫秒级的,若有大量随机I/O,则将会出现指数级的延迟,但是kafka是顺序读写的,因此对于机械磁盘的性能也是不弱的,所以,基于成本问题可以考虑。
  • 固态硬盘(SSD) 读写速度可观,没有成本问题可以考虑。
  • JBOD (Just Bunch Of Disks ) 经济实惠的方案,对数据安全级别不是非常非常高的情况下可以采用,建议用户在Broker服务器上设置多个日志路径,每个路径挂载在不同磁盘上,可以极大提升并发的日志写入速度。
  • RAID 磁盘阵列 常见的RAID是RAID10,或者称为(RAID 1+0) 这种磁盘阵列结合了磁盘镜像和磁盘带化技术来保护数据,因为使用了磁盘镜像技术,使用率只有50%,注意,LinkedIn公司采用的就是RAID作为存储来提供服务的。那么弊端在什么地方呢?如果Kafka副本数量设置为3,那么实际上数据将存在6倍的冗余数据,利用率实在太低。因此,LinkedIn正在计划更改方案为JBOD.

 

1.2 磁盘容量规划

平台按每天产生一亿条消息处理,假设副本为2,数据保留7天,每条消息大小为1K,那么每天消息总量为:1亿 乘 2 乘 1K 除以 1000 除以 1000 =200G磁盘,一周大约1.4T。如果采用压缩比为0.5,那么整个消息的磁盘容量为0.7T。影响因素有:

  • 新增消息数量
  • 副本个数
  • 消息是否启用压缩
  • 消息大小
  • 消息保留时长

 

2、内存大小

kafka对于内存的使用,并不过多依赖JVM 内存,而是更多的依赖操作系统的页缓存,consumer若命中页缓存,则不用消耗物理I/O操作。一般情况下,java堆内存的使用属于朝生夕灭的,很快会被GC,一般情况下,不会超过6G,对于16G内存的机器,文件系统page cache 可以达到10-14GB。

  • 怎么设计page cache,可以设置为单个日志段文件大小,若日志段为10G,那么页缓存应该至少设计为10G以上。
  • 堆内存最好不要超过6G。

 

3、CPU核数

kafka不属于计算密集型系统,因此CPU核数够多就可以,而不必追求时钟频率,因此核数选择最好大于8。

 

4、网络

假设平台一天每小时要处理1Tb的数据,我们选择1Gb/b带宽,那么需要选择多少机器呢?

  • 假设网络带宽kafka专用,且分配给kafka服务器70%带宽,那么单台Borker带宽就是710Mb/s,但是万一出现突发流量问题,很容易把网卡打满,因此在降低1/3,也即240Mb/s。因为1小时处理1TTB数据,每秒需要处理292MB,1MB=8Mb,也就是2336Mb数据,那么一小时处理1TB数据至少需要2336/240=10台Broker数据。冗余设计,最终可以定为20台机器。

 

典型推荐

  • cpu 核数 32
  • 内存 32GB
  • 磁盘 3TB 7200转 SAS盘三块
  • 带宽 1Gb/s

作者:数据云技术社区
链接:https://juejin.im/post/5bd464ccf265da0ac3735124

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐