Kafka 中消费者组协调员和消费者组领导者有什么区别?

问题描述 投票:0回答:2

我看到对 Kafka 消费者组协调员和消费者组领导者的引用...

  1. 有什么区别?

  2. 将集团管理分为两套不同的职责有什么好处?

apache-kafka kafka-consumer-api
2个回答
99
投票

1.有什么区别?

消费者组协调员是经纪人之一,而组领导者是消费者组中的消费者之一。

组协调器只不过是从消费者组的所有消费者接收心跳(或轮询消息)的代理之一。每个消费者组都有一个组协调员。如果消费者停止发送心跳,协调器将触发重新平衡。

2.将集团管理分为两组不同的职责有什么好处?

简短回答

它为您提供更灵活/可扩展的分配策略,而无需重新启动代理。

长答案

这种分离的关键在于组长负责计算整个组的作业。

这意味着可以在消费者上配置此分配策略(请参阅

partition.assignment.strategy
消费者配置参数)。

如果分区分配由消费者组协调员处理,则在不重新启动代理的情况下无法配置自定义分配策略。

更多详情请参阅Kafka客户端分配提案

文档引用

来自“卡夫卡权威指南”[Narkhede、Shapira & Palino,2017]:

当消费者想要加入某个消费者组时,它会发送一个

JoinGroup
向小组协调员提出请求。第一个加入群组的消费者 成为小组领导者。领导收到一份全部名单 来自组协调员的组中的消费者(这将包括 所有最近发送心跳的消费者因此 被认为是活着的)并且它负责分配一个子集 分区给每个消费者。它使用了一个实现
PartitionAssignor
界面来决定应该进行哪些分区 由哪个消费者处理。

[...] 决定分区分配后,消费者领导者发送 发送此信息的

GroupCoordinator
的分配列表 向所有消费者提供信息。每个消费者只看到自己的 分配 - 领导者是唯一拥有完整权限的客户端进程 组中的消费者列表及其分配。这个过程 每次重新平衡发生时都会重复。


0
投票

添加已经给出的答案。 GroupCoordinator 从消费者组领导者接收分区分配,所有消费者从 GroupCoordinator 接收分区分配。

因此 GroupCoordinator 要求 GroupLeader 根据 https://kafka.apache.org/documentation/#consumerconfigs_partition.assignment.strategy 决定分区分配,并收到相同的信息,Coordinator 随后将信息传递给另一个群体内的消费者(不包括领导者)。

每个消费者只知道自己的分区分配。尽管组长知道分配给组中不同消费者的所有分区。

© www.soinside.com 2019 - 2024. All rights reserved.