Kafka 重新平衡旨在将主题的所有分区重新分配给订阅者组的活跃成员,以便在任何给定时刻只有一个消费者使用任何主题分区。所以万一消费者刚刚订阅了一个主题,一切都清楚了,但是消费者 api 还提供了一种将特定分区分配给消费者的方法:
void assign(Collection<TopicPartition> partitions)
现在假设我们有:
- 一个有 5 个分区的主题:1,2,3,4,5
- 一个有 3 个成员的消费者组:1,2,3
- 成员 1 和 2刚刚订阅了一个主题,成员 3已将分区 1 分配给自己
那么在这种情况下,再平衡将如何进行呢?分区 1 是否总是被分配给成员 3(当它处于活动状态时)导致其他成员只能从其他分区(2、3、4、5)读取?组协调员可以将另一个分区分配给成员 3 吗?如果成员 3 出现故障然后又回来,分区 1 会发生什么情况?
提前致谢