在Kafka中,()代表当前日志文件中下一条。
定义:当前副本最新消息的偏移量(Offset),即下一条待写入消息的位置。
例如,LEO=5 表示已写入 0~4 的消息,下一条消息将写入 Offset=5 的位置。
特点:
每个副本(Leader 和 Follower)都有自己的 LEO。
Leader 的 LEO 更新最快,Follower 的 LEO 通过同步逐步追赶。
定义:与 Leader 副本保持同步的副本集合(包括 Leader 自己)。
同步标准:
Follower 的 LEO 与 Leader 的 LEO 差距不超过 replica.lag.time.max.ms(默认 30s)。
若 Follower 长时间未同步,会被踢出 ISR。
作用:
确保消息被多个副本确认后才视为提交(acks=all 时需所有 ISR 确认)。
影响 Kafka 的数据可靠性和可用性。
定义:已提交消息的边界 Offset,表示消费者可见的最大 Offset(即所有 ISR 副本均已同步的消息位置)。
例如,HW=3 表示 Offset 0~2 的消息已被所有 ISR 副本确认,消费者只能读到这些消息。
关键规则:
消费者只能消费 ≤ HW 的消息(防止读到未提交的数据)。
Leader 和 Follower 的 HW 可能不同(Leader 的 HW 更新更快)。
定义:某个分区的所有副本集合(包括 Leader 和 Follower),无论是否同步。
例如,一个分区的 replication.factor=3,则 AR 包含 3 个副本(1 Leader + 2 Follower)。
与 ISR 的关系:
ISR ⊆ AR,即 ISR 是 AR 中同步的副本子集。
AR 中非 ISR 的副本称为 非同步副本(Out-of-Sync Replica)。