【问题标题】:why Kafka consumer group is doing a partition revoking for different topics?为什么 Kafka 消费者组正在为不同的主题进行分区撤销?
【发布时间】:2020-11-19 02:12:40
【问题描述】:

我在消费者组 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]
 

【问题讨论】:

    标签: apache-kafka kafka-consumer-api kafka-partition


    【解决方案1】:

    当一个新的消费者 (C2) 被添加到一个消费者组时,现有的消费者 (C1) 无法确定是否需要撤销。这是因为 C1 不知道 C2 订阅的主题。

    因此,所有现有消费者的所有分区都被撤销。其中一个代理充当协调者,它在后台运行其逻辑以提出有效的分配,然后将其传达给消费者组的消费者。你可以在这里读更多关于它的内容: https://medium.com/streamthoughts/apache-kafka-rebalance-protocol-or-the-magic-behind-your-streams-applications-e94baf68e4f2

    【讨论】:

    • 谢谢,有没有办法避免这种撤销?我正在为我的用例进行手动提交,而这种撤销导致了麻烦
    • 我认为这是不可能避免的,因为交接是由协调经理完成的。如果您确定不会在主题上有任何重叠,您能解释一下为什么使用相同的消费者组 ID 吗?
    • 保持相同的消费者 ID,因为我所有来自业务逻辑点的消费者都服务于相同的目的......我们确定的主题永远不会重叠......但是我们有大约 1000 个主题......不确定如果我应该创建 1000 个消费者组 ID
    • 对我来说,拥有单独的消费者组 ID 完全有意义。消费者组包含依赖消费者,其中消费者的添加/删除会影响组中的所有其他消费者(按设计)。您正在为 1000 个主题创建 1000 个消费者,这些主题彼此独立。把它们放在同一个消费群体中是没有意义的
    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2019-03-17
    • 2014-10-25
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多