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

Kafka事件消费的长尾现象

臧烨烁
2023-03-14

我们的生产遭遇一个Kafka事件的消费现象。总事件量为34亿个事件,有40个分区。且事件消息几乎均匀地分布在每个分区上,每个分区有8000万个事件。

我们分配了 40 个消费者流和 40 个线程(顺便说一句,我们使用 kafka 客户端 0.8.2)。

在消耗期间,在前4小时,每个分区的延迟不断下降。在最后一个小时,2/3的消费者流已经完成事件消耗。只有不到10个消费者流继续接收剩余事件。对于相关的不到10个分区,延迟范围为2-3百万。这意味着消费者池的使用逐渐恢复空闲,同时等待剩余的少数消费者完成任务。

假设 CPU 内核

共有1个答案

公良俊楚
2023-03-14

这是一个非常酷的。我怀疑没有 Kafka 解决方案,除了你提到的那个(增加 # 分区)。

嗯,一个完全愚蠢的想法可能是这样的:在游戏结束时,切换到复制到一个分区较少的新主题,例如37个(相对于40个素数),希望重新洗牌所有消息,以便它们再次均匀地分布在37个分区上。当然,这有很多假设: a)复制比处理快,b)确实没有办法增加最初的40个分区,c)你有额外主题的空间和资源。

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

  • Flink kafka消费者有两种类型的消费者,例如: 这两个消费者层次结构扩展了相同的类。我想知道维护编号类背后的设计决策是什么?我们什么时候应该使用其中一种? 我注意到带有数字后缀的类有更多的特性(例如ratelimiting)。 https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-kafka

  • 我刚接触Kafka,很少阅读教程。我无法理解使用者和分区之间的关系。 请回答我下面的问题。 > 消费者是否由ZK分配到单个分区,如果是,如果生产者将消息发送到不同的分区,那么其他分区的消费者将如何使用该消息? 我有一个主题,它有3个分区。我发布消息,它会转到P0。我有5个消费者(不同的消费者群体)。所有消费者都会阅读P0的信息吗?若我增加了许多消费者,他们会从相同的P0中阅读信息吗?如果所有消费者

  • 我正在尝试让 kafka 消费者获取在 Java 中生成并发布到主题的消息。我的消费者如下。 consumer.java 当我运行上面的代码时,我在控制台中什么也看不到,屏幕后面的java producer程序正在‘AATest’主题下不断地发布数据。另外,在动物园管理员控制台中,当我尝试运行上面的consumer.java时,我得到了以下行 此外,当我运行指向 AATest 主题的单独控制台使用

  • 我有一个简单的Kafka设置。生成器正在以较高的速率向单个分区生成具有单个主题的消息。单个使用者正在使用来自此分区的消息。在此过程中,使用者可能会多次暂停处理消息。停顿可以持续几分钟。生产者停止产生消息后,所有排队的消息都将由使用者处理。生产者产生的消息似乎不会立即被消费者看到。我使用的是Kafka0.10.1.0。这里会发生什么?下面是使用消息的代码部分: 代理上的所有配置都保留为kafka默认

  • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?