Confluent Cloud - 在 poll() 中看不到显著的多线程改进



我尝试使用两种方法消费来自Confluent Cloud集群的消息,并且两种方法的poll((总时间几乎相同-

  1. 单线程-仅使用一个使用者按顺序读取所有TopicPartitions

  2. 多线程-生成多个使用者(相当于TopicPartitions的数量(,手动将每个分区分配给单独的使用者(使用#assign(((。并行运行这些线程并执行#poll((。消息的处理也将由线程本身完成。

第二种方法的速度有所提高,但主要是由于并行处理部分。poll((方法(获取所有ConsumerRecords,不包括处理(在这两种情况下花费的时间几乎相同。

我的问题-KafkaConsumer中的poll((方法是否在某种程度上阻止了服务器端?多个消费者并行轮询与单个消费者顺序轮询的轮询时间几乎相似。唯一的性能提升似乎是由于使用poll((获取所有ConsumerRecords之后发生的处理部分。

注意:我没有在这里使用消费者组功能,因为它不适合我们的用例。如前所述,我正在手动分配TopicPartitions。

当尝试进行多线程或并行消费者时,可以建议以下两个博客-Confluent Cloud-Can';在poll((和https://www.confluent.io/blog/kafka-consumer-multi-threaded-messaging/.我被告知,在一个组中运行多个并发消费者的主要目的通常不是提高从Kafka获取的性能,而是提高处理吞吐量。

最新更新