我想达到以下效果。假设我有9个分区分布在3个工人身上。看起来像这样:
我想做的是,当一台新机器加入消费者群体时。从而增加了一个新的消费者。我希望重新平衡只移动尽可能少的分区到新的消费者。
像这样:看看分区369是如何在新的消费者身上结束的。而其他用户保留了大部分现有分区。
这可能吗?我想做的是在Kafka背后建立有状态的系统。我已经可以这样做了,但是当消费者加入或离开时,默认行为只是断开所有连接,然后从头开始重新平衡。从而制造了大量的分区来改变消费者。这些有什么意义吗?
我想达到以下效果。假设我有9个分区分布在3个工人身上。看起来像这样:
我想做的是,当一台新机器加入消费者群体时。从而增加了一个新的消费者。我希望重新平衡只移动尽可能少的分区到新的消费者。
像这样:看看分区369是如何在新的消费者身上结束的。而其他用户保留了大部分现有分区。
这可能吗?我想做的是在Kafka背后建立有状态的系统。我已经可以这样做了,但是当消费者加入或离开时,默认行为只是断开所有连接,然后从头开始重新平衡。从而制造了大量的分区来改变消费者。这些有什么意义吗?
1条答案
按热度按时间bxjv4tth1#
到目前为止,kafka还不支持这样的特性来进行最小影响的再平衡或部分再平衡。但是,您可以尝试实现自己的分区器逻辑,通过创建一个扩展o.a.k.clients.consumer.abstractpartitionassignor的新类并将“partition.assignment.strategy”设置为其路径来实现这一点。