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

时间:2017-01-19 18:13:35

标签: apache-kafka kafka-consumer-api

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

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

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

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

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

我很欣赏这方面的任何暗示。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

"

相关问题