Kafka - 日志结束偏移量(LEO)与高水位线(HW)之间的区别
Kafka - difference between Log end offset(LEO) vs High Watermark(HW)
副本(Leader Replica
)中的LEO and HW
有什么区别?
它们包含相同的数字吗?我能理解的HW是last committed message offset
.
LEO 何时更新以及如何更新?
高水位线表示已完全复制的消息的偏移量,而如果领导分区中有新添加的记录尚未复制,则日志结束偏移量可能会更大。
消费者只能消费达到高水位线的消息。
有关详细信息,请参阅此博客 post:http://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
让我们从可以在 Google
上找到的最流行的水印定义之一开始
The high watermark is the offset of the last message that was
successfully copied to all of the log’s replicas
我不太相信上面的定义,在深入研究后我发现了这张漂亮的图:
那怎么了?图片最右侧的卡住追随者没有记录第四条消息。
也许找到的第一个定义 Google 并不完整,作者的实际意图是:“高水位线是成功复制到所有日志的最后一条消息的偏移量 同步个副本
在这种直觉的指引下,我发现这个 article 提供了有关如何与代码一起计算 WM 的详细信息。
我发现报告的 WM 定义更加精确:
High watermark is calculated as the minimum LEO across all the ISR of this partition, and it grows monotonically.
这个答案连同提供的代码证实了我的直觉。
总结我认为水印的详细定义显示了LEO和WM之间的区别。最新提交的偏移量和 LEO 可能与同步跟随者的高水位线一致,但对于领导者来说很可能不是,如第一个链接图像中的示例所示。
副本(Leader Replica
)中的LEO and HW
有什么区别?
它们包含相同的数字吗?我能理解的HW是last committed message offset
.
LEO 何时更新以及如何更新?
高水位线表示已完全复制的消息的偏移量,而如果领导分区中有新添加的记录尚未复制,则日志结束偏移量可能会更大。
消费者只能消费达到高水位线的消息。
有关详细信息,请参阅此博客 post:http://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
让我们从可以在 Google
上找到的最流行的水印定义之一开始The high watermark is the offset of the last message that was successfully copied to all of the log’s replicas
我不太相信上面的定义,在深入研究后我发现了这张漂亮的图:
那怎么了?图片最右侧的卡住追随者没有记录第四条消息。 也许找到的第一个定义 Google 并不完整,作者的实际意图是:“高水位线是成功复制到所有日志的最后一条消息的偏移量 同步个副本
在这种直觉的指引下,我发现这个 article 提供了有关如何与代码一起计算 WM 的详细信息。
我发现报告的 WM 定义更加精确:
High watermark is calculated as the minimum LEO across all the ISR of this partition, and it grows monotonically.
这个答案连同提供的代码证实了我的直觉。
总结我认为水印的详细定义显示了LEO和WM之间的区别。最新提交的偏移量和 LEO 可能与同步跟随者的高水位线一致,但对于领导者来说很可能不是,如第一个链接图像中的示例所示。