Index索引文件

流过昼夜 提交于 2020-01-26 00:57:24

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!