Apache Kafka重新启动后的分区和消费者位置

时间:2016-12-13 12:03:29

标签: apache-kafka

我想达到以下效果。 让我们说我有超过3名工人的9个分区。看起来像这样:

Before repartition

我想做的是,当新机器加入消费者群体时。 从而增加了新的消费者。我希望重新平衡只将尽可能少的分区移动到新的消费者。

像这样: 看看分区3 6 9如何结束新消费者。 而其他消费者保留了大部分现有分区。

After repartition

这可能吗? 我想要做的是在Kafka背后建立有状态的系统。 我已经可以做了,但是当消费者加入或离开时,默认行为只是断开所有内容,然后从头开始重新平衡。 从而制作了大量的分区来改变消费者。 这有什么意义吗?

1 个答案:

答案 0 :(得分:3)

截至目前,Kafka不支持此类功能来进行最小影响重新平衡或部分重新平衡。但是,您可以尝试实现自己的分区逻辑,通过创建一个扩展o.a.k.clients.consumer.AbstractPartitionAssignor并将'partition.assignment.strategy'设置为其路径的新类来实现此目的。