Kafka - 不同速度的消费者

Den*_*nis 5 apache-kafka kafka-consumer-api

我对 Kafka 有概念上的问题。

我们有许多机器充当具有许多分区的一个主题的消费者。这些机器在不同的硬件设置上运行,并且会有比其他机器具有更高吞吐量的消费者。

现在消费者和一个或多个分区之间存在直接关联。

如何防止一个分区(慢消费者)比其他分区(快速消费者)更快地累积未消耗的消息,从而导致分区不平衡。

我的一个想法是定期强制重新平衡,但似乎这通常会再次将相同的消费者分配到相同的队列。如果他们被随机重新分配,那将解决我的问题。

我很感激这方面的任何提示。

谢谢你,来自柏林的问候,丹尼斯

Han*_*sen 3

您不必为生产者使用默认分区程序,也不必在消费者中使用动态分区分配。您可以拥有一个高速分区池和一个单独的低速分区池,并手动(或随机)将消息和使用者分配给每个分区池。

“...您无需使用 subscribe 来订阅主题,只需使用您想要使用的分区的完整列表调用 allocate(Collection) 即可。

 String topic = "foo";
 TopicPartition partition0 = new TopicPartition(topic, 0);
 TopicPartition partition1 = new TopicPartition(topic, 1);
 consumer.assign(Arrays.asList(partition0, partition1)); 
Run Code Online (Sandbox Code Playgroud)