赞
踩
Kafka的Topic是由多个Partition组成,理论上一个Topic的分区越多,集群所能达到的吞吐量就越大。
由于Kafka支持批量消息发送,它会为每个分区缓存消息,当消息的大小达到batch.size后,就会将消息打包发送,如果分区数量很大,就会占用producer服务器一部分内存,consumer端由于分区数量很多,就会创建很多线程去消费分区消息,频繁的线程切换也会降低消费者服务器性能。
每个分区消息在broker底层文件系统是由base_offset.log和batch_offset.index存储,如果分区数量越来越多所保持打开状态的文件句柄数就会越来越多,最终有可能突破操作系统限制,影响服务器性能。
Kafka通过多副本机制保证高可用,如果leader分区挂掉,那么所需要选举的时间就会越长,在选举的时候是不可用状态。
消费组消费的增减都会出现再均衡,当分区数量越多,再均衡耗时就会越长,同样也是影响Kafka的消费性能
根据业务经验估算出来想要到达的目标吞吐量Tt,那么partition=Tt/max(Tp,Tc)
Tp:producer的吞吐量
Tc:consumer的吞吐量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。