当前位置: 首页 > news >正文

教你做网站免费顶级域名申请网站

教你做网站,免费顶级域名申请网站,lol做任务领头像网站,企业的所得税费用怎么算目录 一:RocketMq 整体文件存储介绍 二:ConsumeQueue 的文件结构 三:ConsumeQueue 写入和查询流程 一:RocketMq 整体文件存储介绍 存储⽂件主要分为三个部分: CommitLog:存储消息的元数据。所有消息都会…

目录

一:RocketMq 整体文件存储介绍

二:ConsumeQueue 的文件结构

三:ConsumeQueue 写入和查询流程


一:RocketMq 整体文件存储介绍

存储⽂件主要分为三个部分:

    CommitLog:存储消息的元数据。所有消息都会顺序存⼊到CommitLog⽂件当中。CommitLog由多个⽂件组成,每个⽂件固定⼤⼩1G。以第⼀条消 息的偏移量为⽂件名。
    ConsumerQueue:存储消息在CommitLog的索引。⼀个MessageQueue⼀个⽂件,记录当前MessageQueue被哪些消费者组消费到了哪⼀条CommitLog。
    IndexFile:为了消息查询提供了⼀种通过key或时间区间来查询消息的⽅法,这种通过IndexFile来查找消息的⽅法不影响发送与消费消息的主流程。

这篇文章主要介绍ConsumeQueue的研究,以rocketmq5.3.0版本作为研究。


二:ConsumeQueue 的文件结构

ConsumeQueue 的文件格式:

每个 ConsumeQueue 条目占用 20 字节,包含以下三个字段:

字段名长度(字节)说明
CommitLog Offset8消息在 CommitLog 文件中的物理偏移量。
Message Length4消息的长度。
Tag HashCode8消息 Tag 的哈希值,用于快速查找具有相同 Tag 的消息。

这种固定长度的设计使得 ConsumeQueue 文件可以像数组一样随机访问,极大地提高了读取性能


三:ConsumeQueue 写入和查询流程

1. ConsumeQueue 写入流程图

+---------------------+
| 消息写入 CommitLog   |
+---------------------+|v
+---------------------+
| 触发 Reput 操作       |
| - ReputMessageService |
+---------------------+|v
+---------------------+
| 获取 ConsumeQueue    |
| - 根据 Topic 和 QueueId  |
+---------------------+|v
+---------------------+
| 构建索引条目         |
| - CommitLog Offset   |
| - Message Length     |
| - Tag HashCode       |
+---------------------+|v
+---------------------+
| 写入 ConsumeQueue 文件 |
| - 每个条目 20 字节     |
| - 文件大小 30 万条目   |
+---------------------+|v
+---------------------+
| 刷盘操作             |
| - 定期刷盘到磁盘     |
+---------------------+

写入流程

  1. 消息写入 CommitLog

    • Broker 接收到消息后,将其顺序写入 CommitLog 文件

  • 触发 Reput 操作

    • Broker 中的 ReputMessageService 线程异步将 CommitLog 中的消息重新构建到 ConsumeQueue 文件

  • 获取 ConsumeQueue

    • 根据消息的 Topic 和 QueueId,从 consumeQueueTable 中获取对应的 ConsumeQueue。如果不存在,则创建一个新的 ConsumeQueue

  • 构建索引条目

    • 为每条消息构建一个索引条目,包含以下信息:

      • CommitLog Offset:消息在 CommitLog 中的物理偏移量。

      • Message Length:消息的长度。

      • Tag HashCode:消息 Tag 的哈希值

  • 写入 ConsumeQueue 文件

    • 将索引条目写入 ConsumeQueue 文件。每个条目占用 20 字节,文件大小固定为 30 万个条目

  • 刷盘操作

    • 定期将 ConsumeQueue 文件中的数据刷盘,确保数据持久化

consumequeue写入代码:org.apache.rocketmq.store.ConsumeQueue#putMessagePositionInfo


2. ConsumeQueue 查询流程图

+---------------------+
| 消费者拉取消息       |
| - Topic, QueueId     |
| - 起始逻辑偏移量     |
+---------------------+|v
+---------------------+
| 查询 ConsumeQueue    |
| - 根据逻辑偏移量计算 |
|   ConsumeQueue 文件位置 |
+---------------------+|v
+---------------------+
| 读取索引条目         |
| - 获取 CommitLog Offset |
| - 获取 Message Length |
| - 获取 Tag HashCode   |
+---------------------+|v
+---------------------+
| 定位 CommitLog 文件   |
| - 根据物理偏移量计算  |
|   CommitLog 文件位置   |
+---------------------+|v
+---------------------+
| 从 CommitLog 读取消息 |
| - 根据物理偏移量读取  |
| - 校验消息完整性      |
+---------------------+|v
+---------------------+
| 返回消息给消费者     |
+---------------------+

查询流程

  1. 消费者拉取消息

    • 消费者指定 Topic、QueueId 和起始逻辑偏移量,向 Broker 发起拉取消息请求

  • 查询 ConsumeQueue

    • Broker 根据逻辑偏移量计算 ConsumeQueue 文件的位置,读取对应的索引条目

  • 读取索引条目

    • 从 ConsumeQueue 文件中读取索引条目,获取消息在 CommitLog 中的物理偏移量、消息长度和 Tag 哈希值

  • 定位 CommitLog 文件

    • 根据物理偏移量计算 CommitLog 文件的位置,读取对应的消息内容

  • 从 CommitLog 读取消息

    • 从 CommitLog 文件中读取消息内容,并校验消息的完整性

  • 返回消息给消费者

    • Broker 将读取到的消息内容返回给消费者

查询代码入口: org.apache.rocketmq.store.DefaultMessageStore#getMessage(java.lang.String, java.lang.String, int, long, int, int, org.apache.rocketmq.store.MessageFilter)

http://www.dinnco.com/news/63734.html

相关文章:

  • 做游戏的网站个人seo怎么赚钱
  • 门户网站手机版企业seo自助建站系统
  • 如何做网站内链百度号注册官网
  • 意见反馈的网站怎么做太原网络推广公司哪家好
  • 做网站 做推广需要知道什么公司seo排名优化
  • 做网站一般链接什么数据库seo顾问张智伟
  • 网站备案更改吗免费网站申请注册
  • 商城网站模板免费下载培训机构排名前十
  • 专业网站优化报价推蛙网络
  • 深圳设计公司企业网站百度极速版下载安装最新版
  • 深圳市测绘建设局网站合肥百度推广优化
  • 网站开发人员主要干什么的seo优化排名易下拉用法
  • wordpress怎么迁移到空间优化法治化营商环境
  • 网站建设怎么搞新型实体企业100强
  • 广州各类外贸网站制作链接的小程序
  • 福州企业网站开发网站排名优化软件哪家好
  • 连云港 网站设计网络营销渠道的特点
  • 2017年到2018年建设的网站免费个人网站建站
  • 黑龙江龙采做网站如何宣传软文
  • 温州模板网站建站广州谷歌优化
  • 怎么做一个网站的logo设计图广州seo
  • wordpress自定义前端网络优化器免费
  • 网站优化推广方案网站怎么被百度收录
  • 广西建设局网站首页广州新闻热点事件
  • 网站维护有文化建设费百度推广官方网站登录入口
  • 广告推广网站怎么做站长之家端口扫描
  • 网站首页图片轮转代码 很好用西安搜建站科技网站
  • 做网站都有那些步骤班级优化大师的优点
  • 盘锦做网站建设的制作网站大概多少钱
  • 企业网站手机端跳转设置搜索引擎优化是指什么意思