Kafka日志索引
前言
Kafka中的索引文件以稀疏索引(sparse index)的方式构造消息的索引,并不保证每个消息在索引中都有对应的索引项。
每当写入一定量(由Broker端参数log.index.interval.bytes指定,默认值4K),偏移量索引文件、时间戳索引文件分别增加一个偏移量索引项和时间戳索引项,log.index.interval.bytes的值,对应地可以缩小或增加索引项的密度。
稀疏索引是通过MappedByteBuffer将索引文件映射到内存中去,偏移量索引文件是偏移量是单调递增的,使用二分查找法去查找定位偏移量。
偏移量索引
偏移量索引项的格式:
- relativeOffset:相对偏移量,即表示消息相对于baseOffset的偏移量;
- position:物理地址;
使用kafka-dump-log.sh脚本来解析.index文件,示例如下 :
时间戳索引
偏移量索引项的格式:
- timestamp:当前日志分段最大的时间戳;
- relativeOffset:时间戳所对应的消息的相对偏移量;