首页 > 其他分享 >RocketMQ---消息存储

RocketMQ---消息存储

时间:2024-04-10 16:22:39浏览次数:26  
标签:文件 存储 mappedFile broker --- topic 消息 consumequeue RocketMQ

概述

  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

相关文章

  • jmeter监控服务器工具jp@gc - PerfMon Metrics Collector(ServerAgent)
    一、在服务器上安装ServerAgentSeverAgent:这个工具,可以和jmeter集成,在jmeter的GUI界面可以看到数据。链接:https://pan.baidu.com/s/1k3xlXk35YfPmS17-2ZFBnA?pwd=5s4n提取码:5s4n复制这段内容后打开百度网盘手机App,操作更方便哦使用unzip命令解压文件......
  • 20211318 实验一-密码引擎-3-加密API研究
    任务详情:密码引擎API的主要标准和规范包括:微软的CryptoAPIRAS公司的PKCS#11标准中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接......
  • try-with-resource的使用
    try-with-resources支持从Java7开始的所有后续版本。只有实现了AutoCloseable或Closeable接口的资源才能用于try-with-resources。可以在括号内声明多个资源,用分号分隔。如果try块中抛出了异常,并且close()方法也抛出了异常,那么抛出的异常将是try块中的异常......
  • 实验一-密码引擎-3-加密API研究
    实验详情:密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客......
  • react组件之cmao-ui,编写流程图的功能介绍
    流程组件介绍:该组件参考老版力软learun框架中的jquery流程组件进行重构,改写为react的组件。样式、操作、交互方式大致相近。该组件依赖的react版本大于18(不是不能做到兼容旧版react,而是要写就写新版本的,还用老的干嘛)下载//npm下载npminstallcmao-ui引用该组件是......
  • 【大模型应用开发-FastAPI框架】(五)FastAPI 如何通过Poetry运行FastAPI应用程序
    一、概述FastAPI是一个现代、快速(高性能)的Web框架,用于构建API。Poetry是一个Python的依赖管理和打包工具,可以帮助我们更有效地管理项目的依赖和环境。在本文中,我们将介绍如何使用Poetry来运行FastAPI应用程序。二、安装FastAPI和Poetry在开始之前,我们需要先安装FastAPI和P......
  • 【猜数字游戏】-C语言循环的应用及扩展函数的使用
    一、扩展函数的应用1.rand()生成随机数rand()函数需要引用一个头文件:#include<stdlib.h>intrand(void)//int代表返回一个整数,void代表无参数rand()无参数,会返回一个伪随机数,范围是0-RAND_MAX,这个RAND_MAX的大小依赖于编译器,大部分编译器上是32767rand()函数用法展......
  • ETOP05-0045 UNIOP意大利触摸屏触摸失控维修HMI人机界面UNIOP深圳捷达工控维修ETOP504
    UniOP通用操作面板只有在采取特殊措施以确保符合EN61000-6-3的情况下,才允许将这些设备安装到住宅、商业和轻工业环境中。该产品可以通过附在后盖上的铭牌来识别。您必须知道您所使用的设备类型才能正确使用指南中包含的信息。安装环境该设备不适合连续暴露在阳光直射......
  • 西门子PCU50系统白屏维修SINUMERIK PCU503B-C开机没反应数控主机
    西门子SINUMERIKPCU50566MHz/1.2GHzCPU具有更强大CPU(566MHz和1.2GHz)和WindowsNT4.0的创新型SINUMERIKPCU50已发布。具有566MHz的创新PCU50取代了之前具有333MHz的PCU50,以及具有1.2GHz的创新PCU50取代了之前具有500MHz的PCU50。必须另外订购适用......
  • 一种提升深度多视角行人检测的泛化性能的方法 Bringing Generalization to Deep Mult
    一种提升深度多视角行人检测的泛化性能的方法BringingGeneralizationtoDeepMulti-ViewPedestrianDetection论文url:https://openaccess.thecvf.com/content/WACV2023W/RWS/html/Vora_Bringing_Generalization_to_Deep_Multi-View_Pedestrian_Detection_WACVW_2023_paper.......