在 Apache Kafka 中,HW (High Watermark) 和 LEO (Log End Offset) 是两个非常核心的概念,它们主要用于副本机制(Replication)、数据一致性以及消费者可见性的控制。 简单来说,LEO 代表日志的末端,而 HW 代表消费者能读到的安全水位线。 以下是详细的解释: --- 1. LEO (Log End Offset) 定义: LEO 是 Log End Offset 的缩写,表示下一条消息将要被写入日志的位移(Offset)。 关键点: 它是“下一个”位置:如果当前日志中最后一条消息的 Offset 是 9,那么 LEO 就是 10。 每个副本都有自己的 LEO:Leader 副本和 Follower 副本各自维护自己的 LEO。 增长方式: Leader:当生产者发送消息,Leader 写入本地日志后,Leader 的 LEO 增加。 Follower:当 Follower 向 Leader 发起 Fetch 请求同步数据并写入本地日志后,Follower 的 LEO 增加。 > 公式理解:$LEO = \text{La...