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

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

巢权
2023-03-14

在Apache Kafka 0.8.2 office文档的第5.6节“分销、消费者和消费者群体”小节中,它说

组中的使用者尽可能公平地划分分区,每个分区仅由一个消费组中的一个使用者使用。

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

在接下来的消费者身份证登记处小节中

除了由一个组中的所有使用者共享的group_id之外,每个使用者还被赋予一个临时的、唯一的consumer_id(形式为hostname:uuid ),用于标识目的。消费者id在以下目录中注册。

/consumers/[group_id]/ids/[consumer_id]--

它说每个消费者都有一个唯一的id。然而,我在动物园管理员身上找不到这样的结构。

我不知道消费者何时开始注册?我使用的客户端库是kaffa python 0.9.4。

共有1个答案

胡承悦
2023-03-14

愿这有帮助

(1) 第二个问题。https://github.com/dpkp/kafka-python/issues/472以及问题38

它表示“协调消费者团体支持正在开发中。”

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

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

 类似资料:
  • 由于消息需求的排序,我们有一个主题和一个分区。我们有两个消费者运行在不同的服务器上,具有相同的配置集,即groupId、consumerId和consumerGroup。即 1主题- 当我们部署消费者时,相同的代码会部署在两台服务器上。当消息到来时,我们会注意到两个消费者都在消费消息,而不是只有一个处理。让消费者在两台独立的服务器上运行的原因是,如果一台服务器崩溃,至少其他服务器可以继续处理消息。

  • 我正在Java中实现一个简单的Kafka消费者。代码如下: 我在网上查看的任何文档都给出了range或roundrobin作为可能的分配策略,据我所知,groupId是一个自定义名称。不确定这里什么是正确的配置值。

  • 我有一个将消息写入主题/分区的生产者。为了保持顺序,我希望使用单个分区,我希望12个使用者读取来自这个分区的所有消息(没有使用者组,所有消息都应该发送给所有使用者)。这是可以实现的吗?我读过一些论坛,每个分区只有一个用户可以阅读。

  • 问题内容: 我有一个JMS客户端,它正在生成消息并通过JMS队列发送到其唯一的使用者。 我想要的是不止一个消费者收到这些消息。我想到的第一件事是将队列转换为主题,以便现有用户和新用户都可以订阅并将相同的消息传递给他们。 显然,这将涉及在生产者和消费者方面修改当前的客户代码。 我还要查看其他选项,例如创建第二个队列,这样就不必修改现有的使用者。我相信这种方法有很多优点,例如(如果我错了,请纠正我)在

  • 我刚刚开始玩弄《Spring-Cloud-Stream》中的Kafka活页夹。 我配置了一个简单的消费者: 但当我启动应用程序时,我看到在启动日志中创建了三个独立的消费者配置: 我发现这些配置之间唯一不同的是客户机。id。 除此之外,我不知道为什么只有一个消费者有三种配置。 是因为我也在运行吗? 这是我的:

  • 我有两个组id相同的消费者服务器订阅了相同的主题。kafka服务器仅使用一个分区运行。据我所知,消息应该在这两个消费者服务器中随机使用。但现在似乎总是同一个消费者服务器A消费消息,另一个不消费消息。如果我停止消费者服务器A,另一个将正常工作。我所期望的是,他们可以随机消费信息。