2017-06-19 44 views
1

我有两个消费群,即G1和G2。每组传递给一位消费者的消息?

  1. G1有两个成员M1,M2。
  2. G2再次有两个成员M3,M4

G1轮询卡夫卡的话题,将信息传送到只有一名成员无论是M1或M2这里不是两者兼而有之?

同样当G2轮询后的某个时候,它仍然会在主题上找到消息。这里也是枯萎的M3或M4会收到信息?

此外,我相信组中的所有成员应该在同一个节点上。对 ?客户代码或Kafka有责任选择组中的特定成员?

回答

0

您的问题的答案取决于这些消费群体消费的主题中有多少个分区。只有一个消费者组的成员才能从主题的每个分区读取。

如果主题T1中只有一个分区,那么M1和M3会从中读取,M2和M4将不会获得任何消息。

如果在T1两个分隔(比如P1和P2),那么M1和M3将得到T1P1和M2和M4的消息将来自T1P2

一个消费者团体的所有成员获得的消息不必须位于同一节点上

其中一个代理被指定为组的协调员,负责管理组的成员以及他们的分区分配。

+0

正如你所说'如果话题T1中只有一个分区,那么M1和M3会从中读取,M2和M4将不会收到任何消息。“我相信你的帖子的最后一个陈述是你说它的经纪人是负责任的选择M1而不是M2? – emilly

+0

最简单的说法是,客户端和代理进行通信以确定组成员资格和分区分配。更复杂的答案是,组成员大多是在代理上完成的(请参阅https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-GroupMembershipAPI)和分区任务主要在Kafka客户端库中完成(请参阅https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Client-side+Assignment+Proposal) –

+0

如果您有兴趣了解更多信息Kafka 0.11.0.0增加现有的分区分配策略列表中新的粘滞分区分配算法。有一个非常详细的例子写在这里https://cwiki.apache.org/confluence/display/KAFKA/KIP-54+-+Sticky+Partition+Assignment+Strategy –

相关问题