Nee*_*009 6 apache-kafka kafka-consumer-api spring-kafka
我正在使用 @KafkaListener 注释编写一个 kafka 消费者,我知道有一种方法可以使用 ConcurrentKafkaListenerContainerFactory 中的方法增加来自不同分区的并发 kafka 消费者的数量
e.g. factory.setConcurrency(3);
Run Code Online (Sandbox Code Playgroud)
setconcurrency 的 Javadoc 是这样说的:-
KafkaMessageListenerContainer 运行的最大并发数。来自同一分区内的消息将按顺序处理。
现在我的问题是
我有一个带有 144 个分区的 kafka 主题,我们的应用程序需要使用消息,并且 3 个应用程序实例正在并行运行。
我想知道如何决定需要设置的并发值
ConcurrentKafkaListenerContainerFactory.setconcurrency (<Value>)
Run Code Online (Sandbox Code Playgroud)
这样我们就可以在消费消息时实现高吞吐量。
我应该使用 144/3 = 48 作为并发系数还是有公式可以得出这个数字?
是的,最好的方法是48
在每个实例中设置并发性,以便每个分区都将从消费者组中的唯一线程中消耗,并且为了实现高吞吐量,您可以使用具有更高批量大小的批处理侦听器
另一个最佳选择是运行更多实例,例如 14 个实例,每个实例的并发级别为 10。在这两种方法中,您还需要考虑每个具有开销线程的实例的可用 CPU,而不是 CPU 不会提供更好的性能
从版本 1.1 开始,您可以配置 @KafkaListener 方法来接收从消费者轮询中收到的整批消费者记录。要配置监听器容器工厂来创建批量监听器,可以设置batchListener属性
归档时间: |
|
查看次数: |
10378 次 |
最近记录: |