当前位置: 首页 > 知识库问答 >
问题:

重新平衡期间的Kafka消费群体-切换时间和安全性

米树
2023-03-14

我们有一个要求,即给定Kafka分区的消息跨越组成消费者组的集群中的所有节点,应该总是一次执行一条消息,没有重叠。它们被处理(稍微)无序是可以容忍的,但是不允许时间重叠。

在重新平衡期间,我们如何才能安全——例如,假设我们自动缩放我们的消费者,并为同一个消费者组启动一个新消费者——那么新消费者将不得不接管同一个消费者组中现有消费者的分区。

对于一个特定的分区P,让我们假设使用者c1以前处理过分区P,现在由于重新平衡,它不得不放弃,而另一个使用者c2接管了相同的分区P。

我的问题是-如何保证上述要求。因此,如果使用者c2开始处理分区P的消息的时间与使用者c1同时处理同一分区P的消息的时间是不好的。

我可以想象一些违反这一规定的情况——例如,消费者停止心跳到动物园管理员——这引发了再平衡,但消费者并没有真正死亡——并继续处理——所以让我们排除这种情况——我们将不得不忍受——不是很严重不过很可能。

共有1个答案

柯永福
2023-03-14

我认为这个用例现在非常普遍。这可以通过在订阅特定主题时传递ConsumerBalanceListener接口的自定义实现来实现

KafkaConsumer#订阅(收集主题、ConsumerBalanceListener回调)

ConsumerBalanceListener。onPartitionsRevoked(集合

ConsumerBalanceListener。onPartitionsAssigned(集合

 类似资料:
  • Kafka消费群体的滚动部署是否会导致该群体冻结? 让我们来考虑一下这个场景, 我们开始滚动部署 因此,如果您有一个足够大的集群,并且需要一些时间才能在一台机器上完成部署(通常情况下),这会导致消耗完全冻结吗? 如果是,在生产中进行消费者群体更新的策略是什么

  • 在消费者重新平衡期间如何确保消息排序。假设最初我们有四个分区:p1、p2、p3、p4和两个消费者c1和c2(在同一组中)。因此每个消费者得到两个分区,例如c1 : p1,p2和c2 : p3,p4。 现在添加了新的消费者,比如c3和c4,重新平衡发生,这样每个消费者都有一个分区,比如c1: p1、c2: p2、c3: p3、c4: p4。 在此期间,消费者c1可能正在处理来自分区p2的消息(在重新

  • 我们正在运行一个3 broker Kafka 0.10.0.1集群。我们有一个java应用程序,它产生了许多消费线程,从不同的主题消费。对于每一个主题,我们都指定了不同的消费者群体。 很多时候,我看到每当这个应用程序重新启动时,一个或多个CG需要超过5分钟来接收分区分配。在此之前,这个话题的消费者不会消费任何东西。如果我去Kafka broker并运行Consumer-Groups.sh并描述特定

  • 当一个组中只有一个消费者,并且认为消费者无法在session.time.out内进行轮询时,将触发重新平衡,但是在这种情况下,组中只有一个消费者,现在假设session.time.out是30秒和消费者民意调查后50秒组协调员将识别消费者后50秒,并允许它提交偏移或协调员将断开消费者和没有偏移得到提交,并将重新平衡消费者与新的消费者标识?如果上次提交的偏移量是345678,在下一次轮询中,它处理了

  • 我用的是Kafka:2.11-1.0.1。应用程序包含主题“X”的并发性为5的使用者,分区为5。 重新启动应用程序并在分区分配之前在主题“X”上发布消息时,主题“X”的5个使用者会找到组协调器,并将加入组请求发送给组协调器。预计会收到小组协调员的回复,但未收到回复。 我检查了Kafka服务器日志,但在调试日志级别找不到相关日志。 当我运行描述消费者组的命令时,作出如下观察: 消费群体正在重新平衡

  • kafka机器作为hortonworks包的一部分安装,版本为0.1X 我们运行应用程序,使用主题中的数据 在最后几天,我们看到我们的应用程序--失败了,我们开始寻找根本原因 在集群中,我们看到以下行为 从侧集群是健康的,所有的主题都是平衡的,所有的kafka经纪人都正确地向zooManager签名 一段时间后(几个小时),我们再次运行以下内容,但没有错误- 我们得到以下正确的结果 所以我们想了解