什么是Kafka leo(log end offset)和hw(high watermark)
时间: 2024-02-04 14:02:16 浏览: 166
Kafka 中的 LEO(Log End Offset)和 HW(High Watermark)是两个重要的概念,用于表示 Kafka Partition 中消息的存储情况和消费情况。
1. LEO(Log End Offset):表示 Kafka Partition 中最后一条消息的偏移量,即消息在 Partition 中的存储位置。当 Producer 向 Partition 中写入消息时,LEO 会不断增加,表示消息的写入位置;当 Consumer 从 Partition 中拉取消息时,LEO 会不断变化,表示消息的读取位置。
2. HW(High Watermark):表示 Kafka Partition 中已经被 Consumer 消费的消息偏移量,即消息在 Partition 中的消费位置。当 Consumer 从 Partition 中拉取消息时,HW 会不断增加,表示已经消费的消息的偏移量;当 Consumer 向 Kafka Broker 提交位移时,HW 会被更新为提交的位移,表示消费者已经消费了该位移之前的所有消息。
LEO 和 HW 的关系如下:
- LEO >= HW:表示 Partition 中还有未被消费的消息,Consumer 可以继续消费这些消息;
- LEO < HW:表示 Partition 中已经没有未被消费的消息,Consumer 无法继续消费消息,除非有新的消息写入到 Partition 中。
LEO 和 HW 的作用如下:
- LEO 表示消息的存储位置,可以用于监控 Partition 中消息的写入情况;
- HW 表示消息的消费位置,可以用于监控 Consumer 消费消息的情况,以及实现消息传输语义的控制。例如,At Least Once 语义中,Consumer 可以将 HW 作为提交位移的参考,避免消息的重复消费。
阅读全文