美文网首页一些收藏
RocketMQ-存储设计-整体组织方式

RocketMQ-存储设计-整体组织方式

作者: 洛神灬殇 | 来源:发表于2022-04-20 13:32 被阅读0次

RocketMQ 主要的存储文件包含commitlog、consumequeue、IndexFile。其文件布局如下:

image

RocketMQ存储设计-Commitlog文件

Commitlog文件格式

image

消息存储文件:所有主题的消息随着到达Broker的顺序写入commitlog文件,每个文件默认为1G,文件的命名也及其巧妙,使用该存储在消息文件中的第一个全局偏移量来命名文件,这样的设计主要是方便根据消息的物理偏移量快速定位到消息所在的物理文件。RocketMQ commitlog文件使用顺序写,极大提高了文件的写性能。

ConsumeQueue文件格式

image
  **ConsumeQueue文件:消息消费队列文件,是Commitlog文件的基于Topic的索引文件,主要用于消费者根据Topic消费消息,其组织方式为/topic/queue,同一个队列中存在多个文件,consumequeue设计极具技巧性,其每个条目使用固定长度(8字节commitlog物理偏移量、4字节消息长度、8字节tag hashcode)**,这里不是存储tag的原始字符串,而是存储hashcode,目的就是确保每个条目的长度固定,可以使用访问类似数组下标的方式来快速定位条目,极大的提高了ConsumeQueue文件的读取性能,试想一下,消息消费者根据topic、消息消费进度(consumeuqe逻辑偏移量),即第几个Consumeque条目,这样根据消费进度去访问消息的方法为使用逻辑偏移量logicOffset*20即可找到该条目的起始偏移量(consumequeue文件中的偏移量),然后读取该偏移量后20个字节即得到了一个条目,无需遍历consumequeue文件。

1、consumequeue文件引入的目的?

2、consumequeue文件存储tag hashcode而不是存储tag字符串的原因?

相关文章

  • RocketMQ-存储设计-整体组织方式

    RocketMQ 主要的存储文件包含commitlog、consumequeue、IndexFile。其文件布局如...

  • RocketMQ-架构设计

    RocketMQ-架构设计 [https://github.com/apache/rocketmq/blob/ma...

  • HashMap

    类图 1.名词解释 hash为位置计算方式,。map为存储方式 2.整体的存储方式 基础的存储方式是链表数组,就是...

  • 维度建模的实施流程

    什么是 建模? 决定了数据存储的方式,表的设计 为什么要建模? 大数据系统需要数据模型方法来帮助更好地组织和存储数...

  • 03Stack栈

    数据结构=数据+存储方式+操作数据 存储什么数据?如int,string类型存储方式 如何组织数据,数据之...

  • 第四章 表 阅读总结

    4.1 索引组织表 在lnnoDB存储引擎中, 表都是根据主键顺序组织存放的, 这种存储方式的表称为索引组织表(...

  • 数据库原理

    记录物理存储 定长记录 变长记录 多记录存储 物理邻接存储 指针连接存储 大字段存储(BLOBS) 文件组织方式 ...

  • 4-表

    1.索引组织表 在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。在Inno...

  • dubbo 原理图集

    整体架构 #######发布和引用的核心环节 发布的组织过程 #######发布后zk存储结构 #######发布...

  • RocketMQ Broker启动源码笔记

    整体模块 按照rocketmq的设计,broker是专门存储queue、topic的对象关系的,而这些存储需要一个...

网友评论

    本文标题:RocketMQ-存储设计-整体组织方式

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