kafka服务器硬件配置选择与优化

磁盘吞吐量(重要,影响生产者)磁盘容量(制约集群规模)
生产者客户端的性能直接受到服务器端磁盘吞吐量的影响。 需要多大的磁盘容量取决于需要保留的消息数量,也需要考虑集群复制策略的影响。

磁盘类型和容量规划
1.磁盘类型
HDD VS SSD
机械磁盘(HDD) 一般机械磁盘寻道时间是毫秒级的,若有大量随机I/O,则将会出现指数级的延迟,但是kafka是顺序读写的,因此对于机械磁盘的性能也是不弱的,所以,基于成本问题可以考虑。
固态硬盘(SSD) 读写速度可观,没有成本问题可以考虑。
JBOD VS RAID10
JBOD (Just Bunch Of Disks ) 经济实惠的方案,对数据安全级别不是非常非常高的情况下可以采用,建议用户在Broker服务器上设置多个日志路径,每个路径挂载在不同磁盘上,可以极大提升并发的日志写入速度。
RAID 磁盘阵列 常见的RAID是RAID10,或者称为(RAID 1+0) 这种磁盘阵列结合了磁盘镜像和磁盘带化技术来保护数据,因为使用了磁盘镜像技术,使用率只有50%,在加上kafka的副本数,磁盘利用率将会很低

2 .磁盘容量规划

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

新增消息数量
副本个数
消息是否启用压缩
消息大小
消息保留时长
内存(重要,影响消费者)
消费者一般从分区尾部读取消息,如果有生产者存在,就紧跟在生产者后面。这种情况下,消费者读取的消息会直接存放在系统的页面缓存里,这比从磁盘上重新读取要快得多。

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

怎么设计page cache,可以设置为单个日志段文件大小,若日志段为10G,那么页缓存应该至少设计为10G以上。

堆内存最好不要超过6G。

网络(制约集群规模)
kafka支持多个消费者,造成流入和流出的网络流量不平衡,从而让情况变得更加复杂。集群复制和镜像也会占用网络流量。如果网络接口出现饱和,那么集群的复制出现延时就在所难免。

假设平台一天每小时要处理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(不重要)
客户端为了优化网络和磁盘空间,会对消息进行压缩。服务器需要对消息进行批量解压,设置偏移量,然后重新进行批量压缩,再保存到磁盘上。这就是kafka对计算处理能力有所要求的地方。 因此CPU核数够多就可以,核数选择最好大于8,与内存比1:2较为适合.

典型推荐
cpu 核数 16
内存 32GB
磁盘 3TB 7200转 SAS盘三块
带宽 1Gb/s

原文链接:https://blog.csdn.net/weixin_45778734/article/details/105726560

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值