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

学做网站零基础线下引流推广方法

学做网站零基础,线下引流推广方法,网站建设 迅雷下载,网站做等保三级建设引言 在分布式消息队列系统中,消息的高效存储和快速消费是核心需求。RocketMQ 作为一款高性能的消息中间件,采用了独特的存储架构来满足这一需求。其中,ConsumeQueue 作为消息消费的关键索引结构,扮演着至关重要的角色。本文将深…

引言

在分布式消息队列系统中,消息的高效存储和快速消费是核心需求。RocketMQ 作为一款高性能的消息中间件,采用了独特的存储架构来满足这一需求。其中,ConsumeQueue 作为消息消费的关键索引结构,扮演着至关重要的角色。本文将深入探讨 RocketMQ 中的 ConsumeQueue,揭开其设计原理与工作机制的神秘面纱。

一、RocketMQ 存储架构概述

在理解 ConsumeQueue 之前,我们需要先了解 RocketMQ 的整体存储架构。RocketMQ 采用了分层存储的设计理念,主要由以下三个核心组件构成:

  • CommitLog:作为消息的物理存储文件,所有主题的消息都按写入顺序被存储在 CommitLog 中。这是一个全局唯一的存储结构,确保了消息的顺序写入和高效存储。

  • ConsumeQueue:作为消息的逻辑队列,是 CommitLog 的索引文件。每个主题的每个队列都有独立的 ConsumeQueue 文件,记录着消息在 CommitLog 中的物理偏移量、大小、标签等元数据。

  • IndexFile:辅助索引文件,用于支持基于消息 Key 的快速查询。通过哈希表结构,将消息 Key 映射到 CommitLog 中的物理位置。

这种分层存储的设计,使得 RocketMQ 能够在保证高吞吐量的同时,实现灵活的消息检索和消费。

二、ConsumeQueue 的核心作用

ConsumeQueue 在 RocketMQ 中扮演着 "消息消费索引" 的核心角色,其主要作用包括:

2.1 加速消息消费

Consumer 通过 ConsumeQueue 可以快速定位到消息在 CommitLog 中的位置,无需遍历整个 CommitLog。这种索引机制大大提高了消息消费的效率,尤其在海量消息场景下,性能优势更为明显。

2.2 实现逻辑隔离

不同主题、不同队列的消息在 CommitLog 中是混合存储的,但通过 ConsumeQueue,RocketMQ 实现了逻辑上的隔离。每个 ConsumeQueue 只关注特定主题和队列的消息,使得消息的管理和消费更加清晰和高效。

2.3 支持灵活的消费模式

ConsumeQueue 为 RocketMQ 提供了丰富的消费模式支持,如顺序消费、广播消费等。通过维护精确的消息偏移量,Consumer 可以准确地控制消费进度,实现各种复杂的消费语义。

三、ConsumeQueue 的存储结构

3.1 文件结构

ConsumeQueue 以文件形式存储在磁盘上,其目录结构如下:

${storePathRootDir}/consumequeue/${topic}/${queueId}/${fileName}
  • storePathRootDir:存储根目录,默认是${user.home}/store

  • topic:消息主题名称,如OrderTopic

  • queueId:队列 ID,范围从 0 开始,如012...

  • fileName:文件名,由 20 位数字组成,表示该文件的起始物理偏移量。

每个 ConsumeQueue 文件的文件名是其第一条记录的物理偏移量 例如:

  • 00000000000000000000:表示第一个文件,起始偏移量为 0。

  • 00000000003000000000:表示第二个文件,起始偏移量为3000000000

每个 ConsumeQueue 文件默认存储300 万条记录,约占用57.2MB磁盘空间(每条记录 20 字节)。当文件写满后,会自动创建新文件 .

3.2 条目结构

每个 ConsumeQueue 条目固定长度为 20 字节,包含以下三个核心字段:

  • 消息在 CommitLog 中的物理偏移量(8 字节):指向该消息在 CommitLog 中的具体位置。

  • 消息大小(4 字节):记录消息的实际大小,用于快速定位消息边界。

  • 消息 Tag 的哈希值(8 字节):存储消息 Tag 的哈希值,用于支持基于 Tag 的消息过滤。

这种固定长度的设计使得 ConsumeQueue 的解析和读取非常高效,同时也保证了索引的紧凑性和一致性。

四、ConsumeQueue 的生成过程

ConsumeQueue 的生成是一个异步过程,主要由后台线程 ReputMessageService 负责。具体流程如下:

  1. 消息写入 CommitLog:生产者发送的消息首先被写入 CommitLog,这是一个同步操作,确保消息的持久化。

  2. 解析 CommitLog:ReputMessageService 线程不断从 CommitLog 中解析出消息,并提取出主题、队列 ID、物理偏移量、消息大小、Tag 等关键信息。

  3. 构建 ConsumeQueue 条目:根据解析出的信息,构建 ConsumeQueue 条目,并按照队列 ID 将条目写入对应的 ConsumeQueue 文件中。

  4. 刷盘策略:ConsumeQueue 默认采用异步刷盘策略,即先写入内存缓冲区,再由操作系统异步刷盘。这种策略在保证性能的同时,也确保了数据的安全性。

五、ConsumeQueue 与消息消费

当 Consumer 发起消费请求时,RocketMQ 的消费流程大致如下:

  1. Consumer 向 Broker 发送拉取请求:Consumer 根据自己的消费偏移量,向 Broker 请求拉取消息。

  2. Broker 查询 ConsumeQueue:Broker 根据 Consumer 请求的主题和队列 ID,查询对应的 ConsumeQueue 文件,定位到相应的条目。

  3. 获取消息物理位置:从 ConsumeQueue 条目中提取消息在 CommitLog 中的物理偏移量和大小。

  4. 读取 CommitLog:根据物理偏移量和大小,从 CommitLog 中读取实际的消息内容。

  5. 返回消息给 Consumer:将读取到的消息返回给 Consumer 进行处理。

 

 

http://www.dtcms.com/wzjs/465244.html

相关文章:

  • 如何做免费网站常用于网站推广的营销手段是
  • 什么是网站推广查域名网站
  • 网站建设成本友情链接网站源码
  • 广州自建网站哪家服务好搜索引擎优化大致包含哪些内容或环节
  • java做网站例子互联网推广招聘
  • 名人堂网站建设seo基础知识包括什么
  • 昌平石家庄网站建设代做百度首页排名价格
  • 商城类app开发价格淘宝关键词优化怎么弄
  • 惠州微网站建设网店推广培训
  • 寄生虫网站怎么做seo关键词优化软件官网
  • 课桌公司网站建设苏州网站建设
  • 湛江 网站建设爱站网seo查询
  • 长春网站建设电话咨询永久不收费免费的聊天软件
  • 广告手机网站制作西安全网优化
  • 用自己的电脑做网站划算百度账号人工客服电话
  • 淘宝接网站开发的活2345网址导航电脑版
  • 网站把域名解析到新ip后做网页多少钱一个页面
  • 多张图做网站背景seo服务公司怎么收费
  • 网站建设概况无锡网站建设方案优化
  • 怎样用word做网站西安网约车
  • 成都设计网站的公司名称互联网哪个行业前景好
  • 暗网网站产品推广宣传方案
  • 音乐网站开发需要什么语言工具免费b2b网站推广有哪些
  • 网站策划方案800字各大网站域名大全
  • wordpress4.9.4杭州百度首页优化
  • 广告公司名字三个字安徽网站推广优化
  • 自己做的网站怎么在百度搜索到移动网站优化排名
  • 微信服务号菜单链接网站怎么做的足球排名世界排名
  • 网站设计的英文国家中医药管理局
  • 购买了网站如何使用吗上海知名的seo推广咨询