为什么 Kafka 消费者组要针对不同的主题进行分区撤销?
why Kafka consumer group is doing a partition revoking for different topics?
我在消费者组 G1 中有一个消费者 C1,它正在读取主题 T1(进行民意调查),在此民意调查之间,加入了同一组 G1 中的另一个消费者 C2,但订阅了不同的主题 T2。
我观察到的是,主题 T1 的分区被撤销并重新分配给同一消费者 C1,这是预期的,因为该主题没有其他消费者。但我的问题是,当另一个消费者订阅了不同的主题时,为什么首先会发生撤销?
这些是消费者 C1 的日志打印。同时有消费者 C2 加入并订阅主题 T2 :
Revoking previously assigned partitions [T1-1, T1-0]
20/05/28 03:19:04 INFO internals.AbstractCoordinator: [Consumer clientId=consumer-171, groupId=G1] (Re-)joining group
20/05/28 03:19:04 INFO internals.AbstractCoordinator: [Consumer clientId=consumer-171, groupId=G1] Successfully joined group with generation 1117184
20/05/28 03:19:04 INFO internals.ConsumerCoordinator: [Consumer clientId=consumer-171, groupId=G1] Setting newly assigned partitions [T1-1, T1-0]
当一个新的消费者(C2)被添加到消费者组时,现有的消费者(C1)无法确定是否需要撤销。这是因为 C1 不知道 C2 订阅的topic/s。
因此,所有现有消费者的所有分区都被撤销。其中一个经纪人充当协调员,它在幕后运作其逻辑以提出有效的分配,然后将其传达给消费者组的消费者。你可以在这里读更多关于它的内容:
https://medium.com/streamthoughts/apache-kafka-rebalance-protocol-or-the-magic-behind-your-streams-applications-e94baf68e4f2
我在消费者组 G1 中有一个消费者 C1,它正在读取主题 T1(进行民意调查),在此民意调查之间,加入了同一组 G1 中的另一个消费者 C2,但订阅了不同的主题 T2。
我观察到的是,主题 T1 的分区被撤销并重新分配给同一消费者 C1,这是预期的,因为该主题没有其他消费者。但我的问题是,当另一个消费者订阅了不同的主题时,为什么首先会发生撤销?
这些是消费者 C1 的日志打印。同时有消费者 C2 加入并订阅主题 T2 :
Revoking previously assigned partitions [T1-1, T1-0]
20/05/28 03:19:04 INFO internals.AbstractCoordinator: [Consumer clientId=consumer-171, groupId=G1] (Re-)joining group
20/05/28 03:19:04 INFO internals.AbstractCoordinator: [Consumer clientId=consumer-171, groupId=G1] Successfully joined group with generation 1117184
20/05/28 03:19:04 INFO internals.ConsumerCoordinator: [Consumer clientId=consumer-171, groupId=G1] Setting newly assigned partitions [T1-1, T1-0]
当一个新的消费者(C2)被添加到消费者组时,现有的消费者(C1)无法确定是否需要撤销。这是因为 C1 不知道 C2 订阅的topic/s。
因此,所有现有消费者的所有分区都被撤销。其中一个经纪人充当协调员,它在幕后运作其逻辑以提出有效的分配,然后将其传达给消费者组的消费者。你可以在这里读更多关于它的内容: https://medium.com/streamthoughts/apache-kafka-rebalance-protocol-or-the-magic-behind-your-streams-applications-e94baf68e4f2