内存
Kafka严重依赖于使用文件系统来存储和缓存消息,所有数据直接写入磁盘,不需要刷盘(flushing to disk),在Kafka环境中Heap Space (堆内存)设置不能超过6 GB,这样在32GB内存的服务器上系统缓存就会占用28-30GB。
推荐配置64GB内存,如果内存低于32G有可能会产生性能影响。
硬盘
应该采用多硬盘来提高数据吞吐量,将操作系统、kafka数据、kafka日志分别存储在不同的硬盘上,这样可以实现更低的延时。可以采用组建Raid来实现数据的保护,也可以讲每块硬盘单独挂载为一个数据目录通过副本来实现应用层面的数据保护。
如果配置多个数据目录,broker将分区数据存储在不同的数据目录,一个分区保存在一个目录中,如果每个分区的数据不均衡会造成每块硬盘的负载不均衡。
Raid可以提供更好的磁盘负载均衡,因为数据是在更底层的硬件层进行。同时可以容忍硬盘故障不造成系统故障,代价就是降低了硬盘的使用率。
如果使用raid方式,建议采用raid10模式,不建议使用raid5或者raid6模式。
另外不建议使用nas盘作为数据存储,因为nas盘延时较大,同时也会造成单点故障。
网络
在分布式系统更快更稳定的网络可以提供更好的性能,目前1 GbE, 10 GbE的网络已经可以满足绝大部分kafka集群的需求。
文件系统
推荐Kafka的文件系统采用XFS或者ext4格式。
其他因素
推荐使用中等配置的硬件,因为配置较低的服务器需要部署更多的节点,节点过多不便于集群的管理,配置太高则会造成资源的不均衡,例如内存已经用满但是CPU还很空闲。
另外一台服务器上安装多个节点也会造成逻辑架构的复杂性。
VMware环境
在VMware环境环境下VMotion和快照功能会影响Kafka的性能,因此建议将这两个功能关闭掉。
原文地址:https://docs.confluent.io/5.5.1/kafka/deployment.html#hardware