1.IndexHeader头部,40字节,记录IndexFile的统计信息:
begainTimestamp:该索引文件中包含消息的最小存储时间
endTimestamp:该索引文件中包含消息的最大存储时间
begainPhyoffset:该索引文件中包含消息的最大物理偏移量(commitlog文件偏移量)
endPhyoffset:该索引文件中包含消息的最大物理偏移量(commitlog文件偏移量)
hashslotCount:hashslot个数,并不是hash槽的个数,在这里意义不大
indexCount:Index条目列表当前已使用的个数,Index条目在Index条目列表中按顺序存储
2.Hash槽,一个IndexFile默认包含500万个Hash槽,每个Hash槽存储的是落在该Hash槽的hashcode最新的Index的索引
3.Index条目列表:默认一个索引文件包含2000万个条目,每一个Index条目结构如下
hashcode:key的hashcode
phyoffset:消息对应的物理偏移量
timedif:该消息存储时间与第一条消息的时间戳的差值,小于0该消息无效
preIndexNo:该条目的前一条记录的Index索引,当出现hash冲突时,构建的链表结构
关键:map<String消息索引key,long 消息物理偏移量>
IndexFile#putKey
来源:https://www.cnblogs.com/lccsblog/p/12233639.html