卡夫卡 - 不同速度的消费者



我对卡夫卡有一个概念问题。

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

现在,使用者与一个或多个分区之间存在直接关联。

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

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

我将不胜感激对此的任何提示。

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

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

"...无需使用 subscribe 订阅主题,只需使用要使用的分区的完整列表调用 assign(Collection)。

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

"

最新更新