在手动/分配分区的情况下,消费者卡夫卡再平衡

问题描述 投票:0回答:2

我有一个关于重新平衡有些怀疑。现在,我手动分配分区消费。所以,按照文档,将有万一消费者不休假重新平衡/坠毁在一个消费群体。

比方说,有3名和3个消费者在同一组,每个分区手动分配给每一个消费者。而经过一段时间后,第3次消费下降。由于没有再平衡,什么一切措施我可以保证最小的停机时间?我是否需要更改任何一日2个分区配置,开始从第3分区或别的东西消耗?

apache-kafka
2个回答
0
投票

好吧,我不知道为什么你会手动指定分区给消费者?

我想你需要写rebalanceListener。 https://kafka.apache.org/0100/javadoc/org/apache/kafka/clients/consumer/ConsumerRebalanceListener.html

我的建议是:只让卡夫卡决定哪个消费者会听哪个分区,你就不必担心这个问题。


0
投票

虽然有可能是背景下,将使该方法有效,因为写的,我怀疑你的方法一点点。

确保最短的停机时间,最好的办法是让卡夫卡经纪人和饲养员做什么,他们所擅长的,管理你的消费者,其中包括重新分配分区之间的工作负荷(分区)当消费者出现故障。

你的最佳路径是可能使用OnPartitionsRevoked和OnpartitionsAssigned事件来处理任何逻辑,你需要能够承担起一个新的分区(见这些事件JRS链接,更详细信息)。

我将描述的最近使用情况我有,希望它是有关您的用例。最近,我有5名消费者要求的50个亿个对象的内存缓存。如果不分区,每个消费者都有自己的缓存,导致250万级的对象。为了减少这一数字到原来的50万元,我们可以使用onpartitionsrevoked事件来清除缓存和onassigned与指定的分区相关缓存重新填充缓存。

短期使用这两个处理程序,如果你真的想手动分配你的分区,你将不得不做的所有编排自己的:

  1. 监测的东西,如果其他消费者的人下来
  2. 东西捡起死者消费者的分区,并对其进行处理
  3. 编排消费者之间的沟通当死消费者再放沟通,因此它可以重新开始工作。

正如你可能会从列表中告诉,你带来的伤害的一个真实的世界,如果你强迫自己沿着这条路走下去,你可能不会做得比卡夫卡经纪人更好的工作 - 有一个完整的业务,其所有精力都放在重点正在开发和维护卡夫卡,所以你不必处理所有复杂的。

© www.soinside.com 2019 - 2024. All rights reserved.