美文网首页
Broker是怎么保存数据的呢?

Broker是怎么保存数据的呢?

作者: 嘘寒问暖 | 来源:发表于2022-05-26 23:44 被阅读0次

RocketMQ主要的存储⽂件包括commitlog⽂件、consumequeue⽂件、indexfile⽂件。Broker在收到消息之后,会把消息保存到commitlog的⽂件当中,⽽同时在分布式的存储当中,每个broker都会保存⼀部分topic的数据,同时,每个topic对应的messagequeue下都会⽣成consumequeue⽂件⽤于保存commitlog的物理位置偏移量offset,indexfile中会保存key和offset的对应关系。

CommitLog⽂件保存于${Rocket_Home}/store/commitlog⽬录中,从图中我们可以明显看出来⽂件名的偏移量,每个⽂件默认1G,写满后⾃动⽣成⼀个新的⽂件。

由于同⼀个topic的消息并不是连续的存储在commitlog中,消费者如果直接从commitlog获取消息效率⾮常低,所以通过consumequeue保存commitlog中消息的偏移量的物理地址,这样消费者在消费的时候先从consumequeue中根据偏移量定位到具体的commitlog物理⽂件,然后根据⼀定的规则(offset和⽂件⼤⼩取模)在commitlog中快速定位。

相关文章

网友评论

      本文标题:Broker是怎么保存数据的呢?

      本文链接:https://www.haomeiwen.com/subject/jqzpprtx.html