副本(LEO and HW
)中Leader Replica
之间的区别是什么?
它们是否包含相同的数字?我可以理解HW是last committed message offset
。
何时更新LEO以及如何更新?
答案 0 :(得分:15)
高水位表示完全复制的消息的偏移量,而如果新的追加记录尚未复制到领导者分区,则日志结束偏移量可能会更大。
消费者只能获得高水印的消费者信息。
有关详细信息,请参阅此博客文章:http://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
答案 1 :(得分:2)
让我们从可以在 Google 上找到的最流行的水印定义之一开始
<块引用>高水印是最后一条消息的偏移量 成功复制到日志的所有副本
我不太相信上述定义,在深入研究后,我发现了这张漂亮的图片:
当时出了什么问题?图片中最右边的卡住的追随者没有记录第四条消息。 也许谷歌发现的第一个定义并不完整,而作者的真正意图是:“高水印是成功复制到所有日志in-sync的最后一条消息的偏移量> 副本”
在这种直觉的引导下,我发现此 article 提供了有关如何与代码一起计算 WM 的详细信息。
我发现 WM 定义报告的更精确:
<块引用>高水印被计算为该分区所有 ISR 的最小 LEO,并且它单调增长。
这个答案和提供的代码证实了我的直觉。
总结我认为水印的详细定义说明了LEO和WM之间的区别。最新提交的偏移量和 LEO 可能与同步跟随者的高水位线一致,但很可能与领导者不同,如第一个链接图像中的示例所示。