在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。
答案 0 :(得分:2)
愿这个帮助
(1)关于你的第二个问题。 https://github.com/dpkp/kafka-python/issues/472 并发布38
它说“协调消费者群体支持正在开发中。”
(2)关于你的第一个问题。
它说:“这是通过将主题中的分区分配给使用者组中的使用者来实现的,这样每个分区都由该组中的一个消费者使用。”(语句A)。这取决于客户端实现。这在某些kafka客户端可能不正确。我只是有python和cpp的经验。如果已实施群组,则每条消息仅由该群组中的一个消费者使用。如何在一个组中的消费者之间分配分区是不同的。当存在比消费者更多的分区时,语句A可能是正确的。但是,当新分区加入或离开现有组时,也可能重新分配分区。在这种情况下,分区A可以由消费者A首先消费,然后由消费者B消费,这是可能的。在某些客户端中,您可以选择分配算法,例如循环法等。