Kafka 中的消息偏移量(Offset)是指消费者消费消息的进度。每个消费者组中的每个消费者实例都会维护一个 offset,表示它已经消费到的消息进度。
Offset 的主要作用有:
- 消息消费位置标记:Offset 标记消费者消费到的消息位置,以便消费者下次开始消费时从正确位置开始。
- 消息去重:通过 Offset 记录,消费者可以避免重复消费消息。
- 消息追赶:消费者可以通过修改 Offset 来重新消费旧消息或跳过新消息以追赶其他消费者。
- 消费进度同步:消费者组中的消费者实例在发生变化时,可以通过 offset 同步各个实例的消费进度,实现平滑过渡。
例如,消费者 C 消费 Topic T 中 0-3 消息,当前 Offset 为 3。这标记了 C 已消费至第 3 条消息。
当 C 要再次消费 T 时,它会从 Offset 3 开始消费,避免重复消费 0-2 消息。
如果 C 要重新消费 1 条消息,它可以将 Offset 修改为 2,然后从 Offset 2 开始消费。
如果消费者组中增加了消费者 C2,它可以将 Offset 设置为 3 与 C 同步消费进度,然后一起从第 4 条消息开始消费。
Offset 是 Kafka 消息消费的基石,理解 Offset 的作用可以让我们熟练使用 Kafka 消费消息。这也是 Kafka 工程师必备的知识。