我有多个消费者组,每个消费者组有1个消费者。
说,主题 T1 和分区 P1 ,以及2个消费者组 CG1 和 CG2 CG1有1个使用者-CG1#C1,而CG2有CG2#C1
现在,根据设计,我们正在多个消费者群体中收到相同的消息。
我的问题是Kafka如何保持多个消费者群体之间的抵销。 如果1个消费者组关闭了几分钟,然后备份了它,那么它将如何从最近一次提交的读取中获取消息。 CG1在偏移量24中,而CG2'在下降之前一直提交到偏移量10。因此,当CG2上升时,它将如何从偏移量11开始,并且CG1不受影响。
答案 0 :(得分:1)
默认情况下,偏移量存储在名为__consumer_offsets
的特殊主题中。这是compacted topic,其中偏移量存储为带有关键字的消息,该关键字包含主题,分区和使用者组作为关键字。因此,不同消费者群体的抵消额是独立的。希望这能回答您的问题。有关如何精确处理此问题的更多信息,可以在这里查看:http://kafka.apache.org/documentation/#impl_offsettracking
答案 1 :(得分:0)
消费者组是独立的实体。如果不同消费者组中的消费者订阅相同的kafka主题,则胶印管理之间不会有任何冲突。每个消费者组将在__consumer_offsets
主题中维护自己的偏移量(这是管理消费者偏移量的紧凑内部主题)
Kafka提供了一个选项,用于将给定消费者组的所有抵销存储在称为抵销管理器的指定经纪人(针对该组)中。每当使用者从分区读取消息时,它将偏移提交请求发送到偏移管理器。一旦提交请求被接受,使用者就可以读取下一个偏移量。
在偏移提交失败的情况下,使用者重试提交。每个偏移提交都在每个分区中维护。
这是详细说明:http://kafka.apache.org/documentation/#impl_offsettracking