Kafka中的HW、LEO、LSO、LW等分别代表什么?

3,756 阅读1分钟

LogStartOffset,一般情况下,日志文件的起始偏移量 logStartOffset 等于第一个日志分段的 baseOffset,但这并不是绝对的,logStartOffset 的值可以通过 DeleteRecordsRequest 请求、使用 kafka-delete-records.sh 脚本、日志的清理和截断等操作进行修改。

LW是Low Watermark的缩写,俗称“低水位”,代表AR集合中最小的logStartOffset值

LSO,特指LastStableOffset,它与kafka 事务有关。对于未完成的事务而言,LSO的值等于事务中的第一条消息所在的位置(firstUnstableOffset);对于已经完成的事务而言,它的值等同于HW相同。

LEO是Log End Offset的缩写,它表示了当前日志文件中下一条待写入消息的offset。分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW。

HW是 High Watermark 的缩写,俗称高水位,分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW。

所以,HW、LW 是分区层面的概念;而LEO、LogStartOffset 是日志层面的概念;LSO 是事务层面的概念。