概述
RocketMQ的 消息 存储在 本地文件系统中,默认路径:$home/store下;
abort
该文件在 broker启动后自动创建,正常关闭broker,该文件会消失;
若 在未启动broker的情况下,发现该文件存在,说明broker的关闭是非正常关闭;
checkpoint
存储 commitlog、consumequeue、index文件 最后的刷盘时间戳;
...
commitlog
commitlog目录及mappedFile
commitlog目录中 存储着 很多的mappedFile文件;
当前broker中的所有消息 都是落盘到 这些mappedFile中;
mappedFile文件大小为1G(<=1G);
mappedFile文件名 由 20位十进制数构成,左边补0,右边为起始偏移量;
mappedFile当第一个文件写满,第二个文件的名称为上个的起始偏移位置;
一个broker中仅有一个commitlog目录,所有的mappedFile文件都是存储在该目录下;
无论当前broker存放多少topic的消息,这些消息都是被 顺序写入到mappedFile中;
(消息在broker的存放 没有按照topic进行分类存储)
mappedFile 文件是顺序读写,所以访问效率很高;
消息单元
mappedFile文件是 由一个个消息单元组成;
每个消息单元包含:消息总长MsgLen、消息的物理位置physicalOffset、消息内容Body、消息体长度BodyLength、消息主题topic、消息生产者BornHost、消息发送时间戳BornTimeStamp、消息所在队列QueueId、消息在队列的偏移量QueueOffset...
consumequeue
为了 提高查询效率,在 consumequeue 为每个topic下创建一个目录,名称为topic;
在该topic目录下,为每个该topic的queue创建一个目录,名称为队列ID;
每个queue目录下,存放着若干的 consumequeue文件;
consumequeue文件 是 commitlog的索引文件(可以根据consumequeue定位到具体的消息);
consumequeue文件
每个consumequeue文件 可以包含30w个索引条目;
每个索引条目 包含:消息在mappedFile中的偏移量commitlog Offset、消息长度、消息tag;
index
除了通过 topic 进行消息消费外,还提供了根据Key进行消息查询的功能;
通过store目录下的index中的index文件进行索引实现的快速查询(只有包含Key的消息才被写入);
标签:文件,存储,mappedFile,broker,---,topic,消息,consumequeue,RocketMQ From: https://www.cnblogs.com/anpeiyong/p/18126285