1

Kafka重新平衡旨在将主题的所有分区重新分配给订阅者组活动成员,以便任何主题分区仅由一位消费者使用给定的时刻。因此,在情况下,如果消费者刚刚订阅的话题,一切都清楚了,但消费者的API还提供了一种特定的分区分配给消费者:Kafka在组中的一个用户被严格分配到特定分区的情况下重新平衡

void assign(Collection<TopicPartition> partitions)

现在让我们假设有:

  • 用5个分区的主题:1,2,3,4,5
  • 与3个成员一消费群:1,2,3
  • 构件1和2具有刚刚订阅到主题,我MBER 3 已分配分区1到自身

因此,如何再平衡将在这种情况下工作吗?是否将分区1始终分配给成员3(处于活动状态时),结果其他成员只能从其他分区(2,3,4,5)读取?组协调员还可以为成员3分配另一个分区吗?如果会员3出现故障并且随后回来,分区1会发生什么情况?

在此先感谢

回答

1

卡夫卡文档发现:通过这种方法

public void assign(Collection<TopicPartition> partitions)

手册话题分配不使用消费者的组管理功能。因此,当组成员或集群和主题元数据发生更改时,将不会触发重新平衡操作。请注意,无法使用手动分区分配与分配(集合)和分组分配与订阅(集合,ConsumerRebalanceListener)。

因此,所有的消费者在组应使用手动分区分配或者只是订阅(获取分区的动态分配)。

相关问题