如何确定春季卡夫卡设置的并发性? [英] How to decide the concurrency to be set in spring kafka?
本文介绍了如何确定春季卡夫卡设置的并发性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用@KafkaListener注释编写一个Kafka使用者,我知道有一种方法可以使用ConCurentKafkaListenerContainerFactory中的方法增加来自不同分区的并发Kafka使用者的数量
e.g. factory.setConcurrency(3);
setconency的Javadoc如下所示:-
并发运行的KafkaMessageListenerContainer的最大数量。将按顺序处理同一分区内的邮件。
现在我的问题是
我有一个包含144个分区的Kafka主题,我们的应用程序需要在这些分区上使用消息,并且有3个应用程序实例正在并行运行。
我想知道如何确定
中需要设置的并发值ConcurrentKafkaListenerContainerFactory.setconcurrency (<Value>)
以便我们在消费消息时获得高吞吐量。
我应该使用144/3=48作为并发因子,还是有公式来推导此数字?
推荐答案
是最好的方法是在每个实例中将并发设置为48
,这样每个分区都将从使用者组中的唯一线程消耗,而且为了获得高吞吐量,您可以使用Batch listeners和higher batch size
另一个最佳选择是运行更多实例,例如14个实例,每个实例的并发级别为10。在这两种方法中,您还需要考虑每个实例的可用CPUhaving over head threads than CPU will not give better performance
从1.1版开始,您可以配置@KafkaListener方法来接收从消费者调查收到的整批消费者记录。要配置监听器容器工厂以创建批处理监听器,可以设置BatchListener属性
这篇关于如何确定春季卡夫卡设置的并发性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文