Kafka中的HW和LEO存储在哪里



我知道Kafka中有三个重要的元数据:HW、LEO和leader epoch。

我知道每个分区都有自己的前导epoch,它存储在一个名为leader-epoch-checkpoint的文件中。但在阅读了许多文档后,我仍然不知道HW和LEO存储在哪里。

我不认为它们可以简单地存储在RAM中,因为Kafka broker可能会重新启动。那么他们在哪里呢?它们是在动物园管理员里,还是在一些档案里?

在Kafka源中,高水印(HW(也存储在检查点文件中,文件名为"复制偏移检查点";。当Kafka Broker重新启动时,它将重新加载到RAW中。

你可以看到时间表方法";kafka.server.ReplicaManager#checkpointHighWatermarks";,其将高水印值刷新为"0";复制偏移检查点";文件

// in Class ReplicaManager
// the Map for all replication-offset-checkpoint file
@volatile var highWatermarkCheckpoints: Map[String, OffsetCheckpointFile]
// method checkpointHighWatermarks,flush all partitions hw
try highWatermarkCheckpoints.get(logDir).foreach(_.write(hws))

LogEndOffset(LEO(只存储在RAW中,Kafka在加载日志段时会计算LEO。

// see the method scala.Predef$#locally(in class kafka.log.Log)
// really nextOffset = activeSegment.readNextOffset
val nextOffset = loadSegments()
/* Calculate the offset of the next message */
nextOffsetMetadata = LogOffsetMetadata(nextOffset, activeSegment.baseOffset,activeSegment.size)

最新更新