【RocketMq源码】七、消息队列和索引文件恢复

 

1)RocketMQ的存储文件包括消息文件(Commitlog)、消息消费队列文件(ConsumerQueue)、 Hash索引文件(IndexFile)、监测点文件(checkPoint)、abort(关闭异常文件)。

2)单个消息存储文 件、消息消费队列文件、Hash索引文件长度固定以便使用内存映射机制进行文件的读写操作。 RocketMQ组织文件以文件的起始偏移量来命名文件,这样根据偏移量能快速定位到真实的物理文件。

3)RocketMQ基于内存映射文件机制提供了同步刷盘和异步刷盘两种机制,异步刷盘是指在消息存储时先 追加到内存映射文件,然后启动专门的刷盘线程定时将内存中的文件数据刷写到磁盘。

4)CommitLog,消息存储文件,RocketMQ为了保证消息发送的高吞吐量,采用单一文件存储所有主 题消息,保证消息存储是完全的顺序写,但这样给文件读取带来了不便,为此RocketMQ为了方便消息 消费构建了消息消费队列文件,基于主题与队列进行组织,同时RocketMQ为消息实现了Hash索引,可 以为消息设置索引键,根据所以能够快速从CommitLog文件中检索消息。 当消息达到CommitLog后,会通过ReputMessageService线程接近实时地将消息转发给消息消费 队列文件与索引文件。

5)RocketMQ引入abort文件(为安全起见),记录Broker的停机是否是正常关闭 还是异常关闭,在重启Broker时为了保证CommitLog文件,消息消费队列文件与Hash索引文件的正确 性,分别采用不同策略来恢复文件。 RocketMQ不会永久存储消息文件、消息消费队列文件,而是启动文件过期机制并在磁盘空间不足 或者默认凌晨4点删除过期文件,文件保存72小时并且在删除文件时并不会判断该消息文件上的消息是 否被消费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值