Index索引文件
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