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