【问题标题】:kafka consumer patterns with groups带有组的kafka消费者模式
【发布时间】:2014-07-30 13:33:54
【问题描述】:

我正在尝试使用 Kafka 0.8.1.1 了解可能的消费者模式。让我们忽略复制,因为我不相信它会影响这些模式。我为所有测试运行了命令行控制台使用者。

你能确认我的理解是正确的吗?

1) 一个主题,多个分区 m,多个消费者 n,m=>n,未定义组。

在这种情况下,每个消费者都会收到关于该主题的每条消息。

2) 一个主题,多个分区 m,多个消费者 n,其中 m LESS THAN n ,未定义组。

同样的行为。每个消费者都会收到关于该主题的每条消息。

3) 一个主题,多个分区 m,多个消费者 n,m LESS THAN n,为所有消费者定义的一个消费者组

我在其中一个消费者控制台上看到“消费者线程没有使用代理分区”。 这是因为消费者比分区多吗? (在这种情况下 m=3,n=4)

4) 一个主题,多个分区 m,多个消费者 n,m=n,为所有消费者定义的一个消费者组

通过使用 Kafka Monitor,我看到现在每个分区都分配给了一个使用者。但是,数据消费似乎没有并行性。我看到发生的是一个消费者从分区 P1 获取时间 t0 到 t1 的消息。然后另一个消费者从分区 P2 获取从 t1 到 t2 的消息,依此类推。

为什么没有发生并行消费?在我看来,生产者的数据从 t0 到 t1 进入 P1,然后从 t1 到 t2 进入 P2。我认为如果我不指定分区键,生产者的数据将被随机分区。只是随机性似乎被“延迟”了。为什么会这样?

【问题讨论】:

  • 看来随机行为在0.81发生了变化。
  • grokbase.com/t/kafka/users/139d9q9z4h/…。我尝试将 topic.metadata.refresh.interval.ms 设置为 100 毫秒。这仍然没有改变我在上面 4) 中看到的分区行为。

标签: apache-kafka


【解决方案1】:

我认为这两个链接可以帮助您了解正在发生的事情:

Should I choose multiple group ids or a single one for the consumers?

Why some of the consumers in a consumer group never receive any message?

如果你不指定分区键,它不会是随机的,但它会在一个分区上停留一段时间,然后在下一个周期循环到另一个分区。默认时间为 10 分钟,但我认为您可以使用 topic.metadata.refresh.interval.ms 进行更改

【讨论】:

  • 谢谢。您的回答有助于解决我的问题 3)。至于 4),真正的问题是生产者没有以随机方式对数据进行分区。
猜你喜欢
  • 2020-09-19
  • 2019-02-25
  • 2017-01-04
  • 2017-06-22
  • 2019-03-24
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2013-06-14
相关资源
最近更新 更多