卡夫卡在崩溃后重新启动后如何识别组中的消费者
How Kafka identifies consumer in a group once it is restarted after crash
假设我在一个消费者组中有两个消费者 - C1 和 C2。
在 C1 和 C2 都出现之前,有 10 条关于某个主题的消息。 C1 读取前 5 条消息并关闭,而 C2 读取消息 9-10。一段时间后 C1 回来了。现在,Kafka如何识别刚刚上来的消费者确实是C1,并允许它从上次提交的offest中读取,是否保存了一些C1在组中注册时的信息,以便它可以唯一识别C1来了再次备份?
偏移量不绑定到实际的 Kafka 消费者实例,而是绑定到消费者组。
更准确地说,每个消费者组 topic/partition 的提交偏移量存储在 __consumer_offsets
主题中(这是一个紧凑的主题,因此只保留最新的偏移量)。
在您的情况下,一旦消费者 C1 启动并再次 运行,它通常会从消费者所属的消费者组的最新提交偏移量开始消费数据(虽然这取决于配置- 你可以强制它从头开始)。在您的情况下,C1 将从第 11 条消息开始使用消息。
假设我在一个消费者组中有两个消费者 - C1 和 C2。 在 C1 和 C2 都出现之前,有 10 条关于某个主题的消息。 C1 读取前 5 条消息并关闭,而 C2 读取消息 9-10。一段时间后 C1 回来了。现在,Kafka如何识别刚刚上来的消费者确实是C1,并允许它从上次提交的offest中读取,是否保存了一些C1在组中注册时的信息,以便它可以唯一识别C1来了再次备份?
偏移量不绑定到实际的 Kafka 消费者实例,而是绑定到消费者组。
更准确地说,每个消费者组 topic/partition 的提交偏移量存储在 __consumer_offsets
主题中(这是一个紧凑的主题,因此只保留最新的偏移量)。
在您的情况下,一旦消费者 C1 启动并再次 运行,它通常会从消费者所属的消费者组的最新提交偏移量开始消费数据(虽然这取决于配置- 你可以强制它从头开始)。在您的情况下,C1 将从第 11 条消息开始使用消息。