码迷,mamicode.com
首页 > 其他好文 > 详细

RocketMQ详解(二)核心原理

时间:2021-07-21 17:31:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:rocketmq   设计   操作   img   消费者   broker   组成   字节   image   

一、broker消息存储

本节揭露broker上消息存储的真实目录结构+存储方式。

1.1 目录、文件结构

 有3个比较重要的文件:

  • commitLog消息日志:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,
  • consumequeue逻辑消费队列:存储了commitLog的起始物理offset,目的是提高消息消费的性能。
  • indexFile索引文件:提供了一种可以通过key或时间区间来查询消息的方法。

技术图片

 

1.2 consume Queue目录结构

consumequeue文件采取定长设计,每一个条目共20个字节,分别为8字节的commitlog物理偏移量、4字节的消息长度、8字节tag hashcode,单个文件由30W个条目组成,可以像数组一样随机访问每一个条目,每个ConsumeQueue文件大小约5.72M;

技术图片

 

1.3.消息存储

技术图片

如上图(这个图没有画生成索引文件),

1.生产者根据topic发送消息,消息存储在commitLog中,1G一个文件。

2.ReputMessageService重写消息服务执行分发执行2个操作:

1)创建ConsumerQueue逻辑消费队列:CommitLogOffset 物理偏移量、msgSize 消息长度、tagsCode tag哈希。

2)创建索引文件:以创建时的时间戳命名。

3)消费者根据topic、tag拉取消息消费。

 

RocketMQ详解(二)核心原理

标签:rocketmq   设计   操作   img   消费者   broker   组成   字节   image   

原文地址:https://www.cnblogs.com/dennyzhangdd/p/15035116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!