news 2026/6/10 9:41:02

Kafka高水位与日志末端偏移量解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kafka高水位与日志末端偏移量解析

在 Apache Kafka 中,HW(High Watermark,高水位)LEO(Log End Offset,日志末端偏移量)是两个核心概念,它们共同保障了 Kafka 的数据一致性、可靠性与可见性。理解它们的关系对掌握 Kafka 副本机制至关重要。


一、基本定义

概念含义
LEO(Log End Offset)表示当前副本(Replica)日志中下一条待写入消息的 offset。即:已有消息的最大 offset + 1。例如 LEO=10 表示已写入 [0, 9] 共 10 条消息。
HW(High Watermark)表示已被所有 ISR(In-Sync Replicas)副本成功复制的消息的最高 offset。消费者只能消费 offset < HW 的消息,以确保读取的是“已提交”且“多副本一致”的数据。

✅ 简单记忆:

  • LEO= “我写到哪了”(本地进度)
  • HW= “大家都确认到哪了”(全局共识)

二、HW 与 LEO 的关系

1.HW ≤ LEO
  • 因为 HW 是基于 ISR 中所有副本的 LEO 计算得出的,而 Leader 自身的 LEO 通常最大。
  • 所以 HW永远不会超过任何 ISR 副本的 LEO,自然也不会超过 Leader 的 LEO。
2.HW = min(所有 ISR 副本的 LEO)
  • Leader 会持续监控所有ISR 集合中的 Follower 副本的 LEO。
  • 分区的 HW 就是这些副本 LEO 的最小值
    HW = min(Leader.LEO, Follower1.LEO, Follower2.LEO, ...)
  • 只有当所有 ISR 副本都复制了某条消息,该消息的 offset 才会被包含进 HW。
3.消费者只能读取 offset < HW 的消息
  • 这是为了防止消费者读到“尚未被多数副本确认”的数据,避免在 Leader 切换时出现数据丢失或重复
  • 例如:HW=5,则消费者最多只能读到 offset=4 的消息。

三、工作流程示例

假设一个分区有 3 个副本(1 Leader + 2 Follower),初始状态:

副本LEOHW
Leader00
Follower A00
Follower B00
  1. 生产者发送消息 offset=0

    • Leader 写入,LEO → 1
    • Follower 尚未同步 → LEO 仍为 0
    • 此时 ISR 中最小 LEO = 0 →HW 保持 0
    • 消费者看不到这条消息!
  2. Follower A 和 B 完成同步

    • Follower A LEO → 1,Follower B LEO → 1
    • ISR 最小 LEO = 1 →HW 更新为 1
    • 消费者现在可以消费 offset=0 的消息。

四、关键特性

特性说明
数据可见性控制HW 决定了消费者能读到哪里,保证“已提交”语义
容错机制若某个 Follower 落后太多(如网络中断),会被踢出 ISR,不再参与 HW 计算,避免拖慢整体进度
Leader 切换安全新 Leader 必须截断日志至其 HW(即旧 HW),防止暴露未被确认的数据
HW 更新延迟HW 通常在 Follower 发起 Fetch 请求时由 Leader 返回并更新,存在一定延迟

五、图解关系(简化)

Offset: 0 1 2 3 4 5 6 [==== committed ====][-- uncommitted --] ↑ ↑ HW=5 LEO=7
  • [0, 4]:可被消费者安全读取(offset < HW)
  • [5, 6]:已写入 Leader,但未被所有 ISR 确认,不可见

六、常见误区

  • ❌ “HW 是 Leader 的 LEO” → 错!HW 是 ISR 中最小 LEO
  • ❌ “消费者能读到最新写入的消息” → 错!必须等 ISR 同步完成,HW 推进后才能读。
  • HW 保证的是“已复制”而非“已持久化”—— 即使磁盘故障,只要 ISR 中有副本存活,数据就不会丢。

总结

HW 是 Kafka 实现“一致性读”和“高可用”的基石,而 LEO 是每个副本的本地写入进度。HW 由 ISR 中最慢的 LEO 决定,消费者只能看到 HW 之前的数据。

这种设计在性能与一致性之间取得了良好平衡,也是 Kafka 能成为高吞吐、可靠消息系统的关键之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 13:11:50

再也不担心论文!Nano-Banana Pro 论文绘图最全教程发布

再也不担心论文&#xff01;Nano-Banana Pro 论文绘图最全教程发布 原创 Mark Datawhale 2025年12月8日 22:34 在小说阅读器中沉浸阅读 Datawhale干货 教程作者&#xff1a;Mark&#xff0c;华南理工大学 本教程采用一套标准化的工作流&#xff0c;将复杂的绘图任务拆解…

作者头像 李华
网站建设 2026/6/9 23:33:58

第4.0章 自动驾驶七大定位方法总结:从RTK、激光、视觉定位到UWB,一文掌握厘米级定位核心技术

目录 自动驾驶融合定位:多传感器协同的定位革命 1.1 为什么自动驾驶定位仍需融合定位? 1.2 多传感器融合定位的技术路线 1.3 定位精度需求:从米级到厘米级的跨越 七大定位技术深度解析 2.1 组合导航定位(INS+GNSS+IMU) 2.2 IMU航迹推算:短时高精度的秘密武器 2.3 轮速里程…

作者头像 李华
网站建设 2026/6/6 8:37:49

这篇文章旨在解决多模态3D检测中稀疏检测器的性能问题。

全文总结元宝研究背景研究问题:这篇文章旨在解决多模态3D检测中稀疏检测器的性能问题。尽管稀疏检测器在计算成本和下游任务适应性方面优于基于鸟瞰图&#xff08;BEV&#xff09;的检测器&#xff0c;但现有的稀疏检测器忽略了token表示的质量&#xff0c;导致前景质量不佳和性…

作者头像 李华
网站建设 2026/6/9 5:29:20

CatchAdmin v5.0 beta

CatchAdmin v5.0 Beta 已正式发布&#xff0c;这是一个基于 Laravel 12 和 Vue 3 (Element Plus) 构建的前后端分离开源后台管理系统。它的核心是帮助你快速搭建各类后台管理系统。v5.0 Beta 主要更新内容这次更新主要集中在系统架构和开发体验上&#xff0c;主要包括以下几点&…

作者头像 李华
网站建设 2026/6/8 13:26:53

负压防水在电梯井中的应用要点

电梯井作为建筑垂直交通核心&#xff0c;长期面临地下水位变化、结构微变形及高频震动影响&#xff0c;渗漏风险极高。负压防水凭借“主动抗渗结构自防水”双重优势&#xff0c;成为电梯井防水的优选方案&#xff0c;其应用需牢牢把握以下核心要点。 精准探测与基面预处理是基础…

作者头像 李华
网站建设 2026/6/9 19:59:53

【Symfony 8微服务架构新纪元】:手把手搭建高可用服务注册中心

第一章&#xff1a;Symfony 8微服务注册中心概述在现代分布式架构中&#xff0c;微服务的动态性与可扩展性对服务发现机制提出了更高要求。Symfony 8 引入了原生支持的微服务注册中心功能&#xff0c;使开发者能够通过声明式配置实现服务的自动注册与发现。该机制基于轻量级 HT…

作者头像 李华