为什么kafka 0.8.2说每个分区都被消费者组中的一个消费者使用

时间:2016-01-25 09:07:54

标签: apache-kafka

在Apache Kafka 0.8.2 office文档section 5.6 Distribution消费者和消费者群体小节中,它说

  

组中的消费者将分区划分为相当   可能的是,每个分区都由一个消费者中的一个消费者使用   消费者群体。

但我发现在实践中,消费者组中的多个消费者可能通过从同一主题分区发送FetchRequest来从单个分区中消费数据。

在随后的消费者ID注册表小节中

  

除了所有消费者共享的group_id之外   组,每个消费者被赋予一个短暂的,独特的consumer_id(的   form hostname:uuid)用于识别目的。消费者ID是   在以下目录中注册。

     

/ consumers / [group_id] / ids / [consumer_id] - > {“topic1”:#streams,...,   “topicN”:#streams}(短暂节点)

它表示每个消费者都有一个唯一的ID。但是,我在zookeeper中找不到这样的结构。

我不知道消费者什么时候开始注册?我使用的客户端库是kakfa-python 0.9.4。

1 个答案:

答案 0 :(得分:2)

愿这个帮助

(1)关于你的第二个问题。 https://github.com/dpkp/kafka-python/issues/472 并发布38

它说“协调消费者群体支持正在开发中。”

(2)关于你的第一个问题。

它说:“这是通过将主题中的分区分配给使用者组中的使用者来实现的,这样每个分区都由该组中的一个消费者使用。”(语句A)。这取决于客户端实现。这在某些kafka客户端可能不正确。我只是有python和cpp的经验。如果已实施群组,则每条消息仅由该群组中的一个消费者使用。如何在一个组中的消费者之间分配分区是不同的。当存在比消费者更多的分区时,语句A可能是正确的。但是,当新分区加入或离开现有组时,也可能重新分配分区。在这种情况下,分区A可以由消费者A首先消费,然后由消费者B消费,这是可能的。在某些客户端中,您可以选择分配算法,例如循环法等。