【问题标题】:kafka multiple consumer groupskafka多消费群体
【发布时间】:2018-10-29 07:29:12
【问题描述】:

我有多个消费者群体,每个群体都有 1 个消费者。

说,主题 T1 和分区 P1 和 2 个消费组 CG1CG2 CG1 有 1 个消费者 - CG1#C1,相应地 CG2 有 CG2#C1

现在,我们在多个消费者群体中收到相同的消息,这是按照设计预期的。

我的问题是 Kafka 如何跨多个消费者组维护偏移量。 如果 1 个消费者组关闭了几分钟并且再次备份它,那么它将如何从最后一次提交的读取中获取消息。 CG1 在偏移量 24 和 CG2' 中,然后向下提交直到偏移量 10。因此,当 CG2 启动时,它将如何从偏移量 11 开始获取并且 CG1 不受影响。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    默认情况下,偏移量存储在名为__consumer_offsets 的特殊主题中。这是一个compacted topic,其中偏移量存储为带有键的消息,其中包含主题、分区和消费者组作为键。由于这一点,不同消费者群体的偏移量是独立的。希望这能回答你的问题。有关如何处理的更多信息,您可以在这里查看:http://kafka.apache.org/documentation/#impl_offsettracking

    【讨论】:

      【解决方案2】:

      消费者群体是独立的实体。如果不同消费者组的消费者,订阅同一个kafka topic,offset管理不会有冲突。每个消费者组将在__consumer_offsets主题中维护自己的偏移量(这是管理消费者偏移量的压缩内部主题)

      Kafka 提供了将给定消费者组的所有偏移量存储在称为偏移量管理器的指定代理(针对该组)中的选项。每当消费者从分区读取消息时,它都会向偏移管理器发送偏移提交请求。一旦提交请求被接受,消费者就可以读取下一个偏移量。

      如果偏移提交失败,消费者会重试提交。每个分区都维护每个偏移量提交。

      这里是详细解释:http://kafka.apache.org/documentation/#impl_offsettracking

      【讨论】:

        猜你喜欢
        • 2018-08-14
        • 1970-01-01
        • 2021-09-11
        • 2018-03-16
        • 2020-03-11
        • 1970-01-01
        • 2023-03-20
        • 2022-10-13
        • 1970-01-01
        相关资源
        最近更新 更多