【问题标题】:I am reading Kafka documentation and trying to understand the working of it我正在阅读 Kafka 文档并试图了解它的工作原理
【发布时间】:2019-05-15 01:51:29
【问题描述】:

我正在阅读 Kafka 文档并试图了解它的工作原理。这是关于消费者的。简而言之,一个主题被划分为多个分区。有多个消费者组,每个组都有多个消费者实例。现在,我的问题是,每个分区是否向每个消费者组发送“相同”的消息,而这些消息又被提供给组内的特定消费者实例?

如果是,Kafka如何确保消息仅由一个消费者处理?

如果我遗漏了什么,请指导我。

【问题讨论】:

标签: apache-kafka kafka-consumer-api kafka-producer-api


【解决方案1】:

简单地说:

  1. 我们将主题划分为多个分区。

  2. 我们有消费者使用来自这些主题的数据。

  3. 消费者通过共享相同的 group.id 成为消费者组的一部分。

  4. 从一个主题中,每个分区都由一个消费者组中的一个消费者消费。

示例: 具有 3 个分区的主题“测试”。 消费组A:3个消费者 消费者组 B:有 2 个消费者。

这两个消费组 A 和 B 消费来自主题“test”的数据。

在组 A 中,每个消费者(所以 3 个)将分别消耗一个分区,而在组消费者 B(有 2 个消费者)中,一个消费者将读取 2 个分区,另一个将消耗最后一个。 如果我们有一个最后一个消费者组,里面只有一个消费者,它将读取该主题的所有 3 个分区。

希望对您有所帮助,如果您不明白,请告诉我。

【讨论】:

  • 嗨,一个问题。在你的例如。考虑分区 1 中的一条消息 (msg1)。由于分区 1 可以由 A 组中的一个消费者和 B 组中的一个消费者读取。Kafka 如何确保只有一个消费者(可能来自 A 或 B)处理 msg1。
  • 或者两个消费者都会处理 msg1?
  • 是的,就是这样,消息被两个消费者消费了。
  • 太棒了。你能告诉我为什么它同时发送给消费者而不是一个消费者。考虑有 10 个消费者群体。每个小组都会收到消息。为什么需要这个?其背后的目的是什么?
  • Apache Kafka 的主要目标是发布-订阅消息系统。
猜你喜欢
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2017-09-20
  • 1970-01-01
相关资源
最近更新 更多