本期重点内容
我们将会在本篇文章中详细的探究一下RocketMQ文件恢复机制,即RocketMQ重新启动时所涉及一系列的存储文件是如何恢复的,其中RockeMQ的重新启动涉及两个方面,一个方面是正常关闭RocketMQ后的存储文件重新恢复,另一方面是在Broker异常关闭时(宕机等情况)存储文件重新恢复。
涉及重点文件概念
在进行详细的探究源码之前,我们先来梳理几个RocketMQ中比较重要的文件,有助于更好的理解后续的源码解析部分的内容。
abort文件
abort文件是在RocketMQ启动时会创建的一个临时文件,当RocketMQ正常的关闭时,会将此文件进行删除,当RocketMQ异常关闭时,此文本得以保留,这样就能够判断RocketMQ关闭时的状态。
这种用法我们也可以在工作中尝试的使用一下。
checkpoint文件
checkpoint文件用于记录Commitlog文件、ConsumeQueue文件、indexFile文件存储消息的存储时间戳,此时间戳之前存储的数据都是可信的,表示已经刷新到磁盘存储上去了。
Commitlog文件
生产者发送过来的所有消息都会顺序的写入Commitlog文件,并按照指定的策略刷新到磁盘上面。
ConsumeQueue件
消息消费的索引文件,消费者通过读取ConsumeQueue文件获取消息的偏移量以及大小,然后去Commitlog文件获取消息,此处获取消息涉及到了随机读取。
indexFile文件
消息的索引文件,能够根据指定消息的索引key到Broker服务器上面查询到该条消息