RocketMQ的运行架构
目录
- 1. 核心组件
- (1) NameServer
- (2) Broker
- (3) Producer
- (4) Consumer
- 2. 消息流转流程
- 3. 高可用机制
- 4. 扩展性与负载均衡
- 5.容错机制
- 5. 特殊功能支持
- 6. 典型部署架构
- 总结
RocketMQ 是一款高性能、高可靠的分布式消息中间件,其运行架构设计为分布式、可扩展、高可用的模式。以下是 RocketMQ 的核心运行架构及组件说明:

1. 核心组件
RocketMQ 的架构主要由以下四个核心组件构成:
(1) NameServer
- 角色:轻量级的服务发现与路由管理组件(无状态,节点间不通信)。
- 功能:
- 管理 Broker 的注册与心跳检测,维护 Topic 与 Broker 的路由关系。
- 为 Producer 和 Consumer 提供 Topic 的路由信息查询。
- 特点:
- 多个 NameServer 实例组成集群,避免单点故障。
- Broker 启动时向所有 NameServer 注册,并定时发送心跳。
(2) Broker
- 角色:消息存储与传输的核心节点,负责消息的持久化、投递和查询。
- 功能:
- 消息存储:采用顺序写盘(Commit Log)和索引(Consume Queue)结合的方式,保证高性能。
- 主从架构:
- Master:处理读写请求,支持同步/异步复制数据到 Slave。
- Slave:备份数据,仅处理读请求(如消费落后时的消息拉取)。
- 支持事务消息、延迟消息、重试队列等功能。
- 特点:
- 通过 Broker 集群实现水平扩展和高可用。
- 每个 Topic 划分为多个队列(Queue),分散到不同 Broker。

(3) Producer
- 角色:消息生产者,向 Broker 发送消息。
- 功能:
- 根据 NameServer 提供的路由信息选择目标 Broker 和 Queue。
- 支持同步、异步、单向发送模式。
- 支持消息发送重试机制。
- 特点:
- 支持消息 Sharding(如按 Key 哈希选择 Queue)。
- 可通过事务消息保证分布式事务的最终一致性。
(4) Consumer
- 角色:消息消费者,从 Broker 拉取消息并处理。
- 功能:
- 根据消费模式(集群消费或广播消费)订阅消息。
- 支持 Push 模式(长轮询)和 Pull 模式。
- 维护消费进度(Offset),支持顺序消费。
- 特点:
- 消费者组(Consumer Group)内负载均衡,组内消费者分摊 Queue。
- 消费失败时触发重试机制,最终进入死信队列(DLQ)。
2. 消息流转流程
-
启动与注册:
- Broker 启动时向所有 NameServer 注册。
- Producer/Consumer 启动时从 NameServer 获取路由信息。
-
消息发送:
- Producer 根据路由信息选择 Broker 和 Queue,发送消息到 Broker。
- Broker 将消息写入 Commit Log,并生成索引(Consume Queue)。
-
消息消费:
- Consumer 从 Broker 拉取消息,处理成功后提交 Offset。
- 若消费失败,消息进入重试队列,多次失败后进入死信队列。
3. 高可用机制
- Broker 主从同步:
- 同步复制(Master-Slave 数据强一致)或异步复制(高性能)。
- Master 故障时,Slave 可切换为新的 Master(需人工或自动触发)。
- NameServer 集群:多节点部署,无状态设计,任一节点故障不影响服务。
- 消息持久化:消息写入磁盘,防止数据丢失。
4. 扩展性与负载均衡
- Topic 分片:将 Topic 划分为多个 Queue,分散到不同 Broker。
- 消费者负载均衡:同一 Consumer Group 内的消费者分摊 Queue。
- Broker 集群扩展:通过增加 Broker 节点提升吞吐量。
5.容错机制
- 自动重试机制(消息发送/消费):
- 故障broker转移
- 消费者自动重新平衡队列分配
5. 特殊功能支持
- 事务消息:通过两阶段提交(半消息 + 事务状态回查)实现分布式事务。
- 顺序消息:通过锁定特定 Queue 保证消息顺序。
- 延迟消息:支持预设延迟级别,消息定时投递。
- 消息过滤:基于 Tag 或 SQL 表达式过滤消息。
6. 典型部署架构
[Producer] --> [NameServer Cluster]↑ ↓ ↖
[Broker Master] ←→ [Broker Slave]↙ ↓ ↘
[Consumer] --> [NameServer Cluster]
总结
RocketMQ 的架构通过 NameServer 实现解耦,Broker 主从设计保障高可用,生产者与消费者的分布式部署支持水平扩展。其高性能、可靠性和丰富的功能(如事务、顺序消息)使其适用于电商、金融等对消息一致性要求高的场景。
相关文章:
RocketMQ的运行架构
目录 1. 核心组件(1) NameServer(2) Broker(3) Producer(4) Consumer 2. 消息流转流程3. 高可用机制4. 扩展性与负载均衡5.容错机制5. 特殊功能支持6. 典型部署架构总结 RocketMQ 是一款高性能、高可靠的分布式消息中间件,其运行架构设计为分布式、可扩展、高可用的…...
SLAM文献之-DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras
DROID-SLAM 是一种结合深度学习与传统视觉SLAM技术的先进算法,其核心目标是通过端到端可训练的深度神经网络来实现高精度的相机位姿估计和稠密三维重建。与传统SLAM方法不同,DROID-SLAM采用深度学习网络来估计深度信息,提供更高的精度与鲁棒性…...
nano 是 Linux 系统中的一个 命令行文本编辑器
nano 是 Linux 系统中的一个 命令行文本编辑器,用于在终端中直接编辑文本文件。它相比 vi 或 vim 更加简单易用,适合新手操作。 具体解释: 在你给出的命令 sudo nano /etc/nfs.conf 中: sudo:以管理员权限运行命令&a…...
JAVA毕设项目-基于SSM框架的百色学院创新实践学分认定系统源码+设计文档
文末获取源码数据库文档 感兴趣的可以先收藏,有毕设问题,项目以及论文撰写等问题都可以和博主沟通,尽最大努力帮助更多的人! 百色学院创新实践学分认定系统设计与实现 摘 要 本百色学院创新实践学分认定系统是针对目前实践学分认定…...
Unity3D 刚体动力学(Rigidbody Dynamics)详解
引言 在Unity3D中,刚体(Rigidbody)是实现物理模拟的核心组件之一。刚体动力学(Rigidbody Dynamics)是指通过物理引擎模拟物体的运动、碰撞、重力等行为。Unity3D内置了强大的物理引擎,开发者可以通过刚体组…...
深入理解Spring Cloud Gateway网关原理及使用
1、网关简介 网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等。 2、Gateway简介 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。相比 Zuul 来说,Spring Cloud Gateway 提供更优秀的性能,更强大的有功能。 Spri…...
ESP32+Mixly-WiFi
#include <WiFi.h> #include <TimeLib.h> #include <NtpClientLib.h>int8_t timeZone 8; // 时区设置,东八区为8 const PROGMEM char *ntpServer "ntp1.aliyun.com"; // NTP服务器地址void setup(){Serial.begin(9600); //初始化串口…...
Spring AI:开启Java开发的智能新时代
目录 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目标 三、Spring AI 的核心组件3.1 数据处理3.2 模型训练3.3 模型部署3.4 模型监控 四、Spring AI 的核心功能4.1 支持的模型提供商与类型4.2 便携 API 与同步、流式 API 选项4.3 将 AI 模型输出映射到 …...
Github-介绍
GitHub 是一个基于 Git 版本控制系统的代码托管平台,广泛用于开源项目、团队协作、代码管理等方面。它让开发者能够上传、分享、修改、协作、跟踪代码的更改。 1. GitHub 的基本功能: 代码托管:GitHub 提供云端存储代码的功能,可…...
爬虫系列之【数据解析之正则】《二》
目录 前言 一、正则基本使用 1.1 导包 1.2 接口方法 1.3 换行匹配问题 二、实战案例 完整代码 前言 在爬虫工作中,我们主要会遇到两种类型的文本数据: JSON格式数据 HTML文档数据 对于JSON字符串数据,通常使用Python的字典操作进行键…...
【音视频】视频基本概念
一、视频的基本概念 1.1 视频码率(kb/s) 视频码率是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流进度也就越高 1.2 视频帧率(fps) 视频帧率…...
2.4GHZ无线跳频算法 C语言
目录 一、概述 二、2.4GHZ无线调频算法C语言代码 关键点说明: 实际应用注意事项: 一、概述 2.4GHz频段常用在蓝牙、Wi-Fi或者Zigbee这些无线技术中,不同的协议可能有不同的跳频机制。比如蓝牙使用的是自适应跳频,而传统的可能用伪随机序列跳频。 用户可能是在开发自己…...
【leetcode hot 100 56】合并区间
解法一:排序 我们用数组 merged 存储最终的答案。首先,我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中,并按顺序依次考虑之后的每个区间: 如果当前区间的左端点在数组 merged 中最后一个区间的右…...
Python测试框架Pytest的参数化
上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…...
4G工业路由器在公交充电桩中的应用与优势
随着电动公交车的普及,公交充电桩的稳定运行和高效管理是交通营运部门最关心的问题。4G工业路由器凭借其卓越的数据采集和通讯能力,成为实现充电桩智能化管理的关键。 公交充电桩运维管理需求概述: 1.实时性:实时监控充电状态、剩…...
搭建一个简单的node服务,模拟后端接口
目录 一、查看是否安装了node和npm 二、创建一个文件夹,用于放你的node服务代码 三、初始化一个package.json 四、安装 Express(快速搭建服务的框架) 五、创建serve.js 六、运行服务即可 七、测试接口 法一:使用 curl 法…...
高频 SQL 50 题(基础版)_610. 判断三角形
思路 # Write your MySQL query statement below select x,y,z, case when xy>z and xz>y and yz>x then Yes else No end as triangle from Triangle...
【JQuery—前端快速入门】JQuery 基础语法
JQuery JQuery是一个快速、简洁且功能丰富的JavaScript框架; 1. 引入依赖 使用JQuery需要先引入对应的库; 在使用 JQuery CDN 时,只需要在 HTML 文档中加入如下代码 <script src"https://code.jquery.com/jquery-3.7.1.min.js"></s…...
Springboot整合WebSocket+Redis以及微信小程序如何调用
一、 Springboot整合WebSocket 1. 引入socket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>引入依赖后需要刷新maven,Websocket的版本默认跟随S…...
【前端基础】1、HTML概述(HTML基本结构)
一、网页组成 HTML:网页的内容CSS:网页的样式JavaScript:网页的功能 二、HTML概述 HTML:全称为超文本标记语言,是一种标记语言。 超文本:文本、声音、图片、视频、表格、链接标记:由许许多多…...
WCH RISC-V MCU开发:在MounRiver Studio里一键切换GCC8和GCC12工具链(附内存占用对比)
WCH RISC-V MCU开发实战:MounRiver Studio工具链切换与性能优化指南 对于嵌入式开发者而言,选择合适的编译器工具链往往能在资源受限的MCU环境中带来显著性能提升。WCH基于RISC-V架构的微控制器凭借其高性价比和丰富外设资源,正逐渐成为物联网…...
【全网最全图文版】Windows 版 Open Claw v 2.7.5 纯净版搭建教程
📌 前言 开源圈热门的「数字员工」OpenClaw(昵称小龙虾),GitHub 星标突破 28 万,凭借本地运行 零代码操作 自动干活的核心优势广受关注!很多人误以为它是普通聊天 AI,实则是能真正操控电脑的…...
传递函数极零点分析:从RC滤波器到系统稳定性设计
1. 从电路到方程:理解传递函数的基石在电子工程,尤其是模拟电路和信号处理领域,我们常常需要精确描述一个系统如何“加工”输入信号。比如,一个简单的RC低通滤波器,它如何让低频信号顺利通过,同时抑制高频噪…...
Creo二次开发避坑:用ProAsmcomppathInit搞定装配体遍历,别再卡在ProFeature转ProAsmcomppath了
Creo二次开发实战:高效构建装配体遍历路径的深度解析 在Creo二次开发领域,装配体遍历是许多高级功能的基础操作,但开发者常常会在ProFeature到ProAsmcomppath的转换过程中遭遇瓶颈。本文将从底层数据结构入手,揭示一种被多数文档忽…...
Arm架构AMU性能监控原理与实践指南
1. Arm架构活动监视器(AMU)核心原理活动监视器(Activity Monitors Unit, AMU)是Armv8/v9架构中用于性能监控的关键硬件模块。作为处理器微架构的一部分,AMU通过专用硬件计数器实时采集CPU执行过程中的各类性能事件数据。与传统的性能监控单元(PMU)相比,A…...
【免费下载】 探索地理信息的无限可能:MATLAB Mapping Toolbox 自由之旅【matlab下载】
探索地理信息的无限可能:MATLAB Mapping Toolbox 自由之旅 在数字化时代的浪潮中,地理信息系统(GIS)已成为连接现实世界与数字世界的桥梁。今天,我们特别向您推荐一个开源宝藏——MATLAB Mapping Toolbox R2019b提取版…...
摄影师的终极批量水印神器:semi-utils让照片保护变得如此简单
摄影师的终极批量水印神器:semi-utils让照片保护变得如此简单 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 还在为一张张手动添加水印…...
终极免费AI图像放大工具Upscayl完整指南:高效提升图片分辨率
终极免费AI图像放大工具Upscayl完整指南:高效提升图片分辨率 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl Upsc…...
在数字记忆成为个人财富的时代,如何让微信对话成为永恒珍藏?
在数字记忆成为个人财富的时代,如何让微信对话成为永恒珍藏? 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…...
告别内存泄漏!LabVIEW调用Halcon后必须做的资源释放操作(附HImage、HWindow关闭方法)
LabVIEW与Halcon混合编程中的资源管理实战指南 在工业自动化检测领域,LabVIEW与Halcon的结合堪称黄金搭档——前者提供灵活的流程控制,后者拥有强大的图像处理能力。但许多工程师在开发长期运行的视觉系统时,常常遇到一个隐形杀手:…...
