RocketMQ 核心详讲(重点标粗,精简实用版)

一、整体定位 & 核心特点(必背重点

RocketMQ 是阿里开源分布式消息中间件,主打高吞吐、高可用、低延迟、事务消息、顺序消息、重试队列,广泛用于异步解耦、流量削峰、消息推送、分布式事务。

核心优势(重点)

  1. 高吞吐:单机支持十万级 TPS,磁盘顺序写优化
  2. 高可用:主从架构、集群部署,支持故障自动切换
  3. 消息类型丰富:普通消息、顺序消息、延时消息、事务消息、重试 / 死信消息
  4. 可靠投递:消息持久化、ACK 确认、重试机制,保证不丢消息
  5. 轻量易运维:架构简单,部署、扩容、监控友好

二、整体架构(核心重中之重

1. 四大核心组件(必记)

(1)NameServer 名称服务器
  • 作用:路由注册、路由发现,轻量级注册中心
  • 特点:无状态、可集群部署(多节点保证高可用)
  • 流程:Broker 主动上报路由信息 → 生产者 / 消费者先连 NameServer 获取 Broker 地址,再直连 Broker
(2)Broker 消息服务器(核心存储节点

整个 RocketMQ 最核心角色,负责消息接收、存储、转发、推送

  • 角色划分:
    • Master 主节点:读写都支持,负责接收生产消息
    • Slave 从节点:只读不写,同步 Master 数据,做负载 & 容灾
  • 部署模式:主从架构(1 主多从),支持异步 / 同步双写
  • 端口:
    • 对外通信端口:默认 10911
    • HA 主从同步端口:默认 10912
(3)Producer 消息生产者
  • 负责发送消息到 Broker
  • 集群模式:支持集群部署,负载均衡发消息
  • 发送模式(重点):同步发送、异步发送、单向发送
(4)Consumer 消息消费者
  • 负责消费 Broker 推送的消息,也就是 MQ 监听端
  • 两种消费模式(高频考点 / 业务重点
    1. 集群消费(默认):同组消费者负载均衡,一条消息只被一个实例消费
    2. 广播消费:同组所有消费者全量接收同一条消息
  • 消费方式:主动拉取 (Pull) / 服务端推送 (Push),日常多用 Push

2. 架构流转全景(精简)

生产者 → NameServer 获取 Broker 路由 → 直连 Broker 存消息消费者 → NameServer 获取 Broker 路由 → 直连 Broker 拉 / 推消息

重点:生产者、消费者不直接互相通信,全程只和 Broker 交互


三、消息模型 & 消息结构(业务使用核心

1. 基础概念(重点)

(1)Topic 主题
  • 消息分类标识,同一业务消息归到一个 Topic
  • 逻辑概念,Broker 上物理分片存储
(2)Message Queue 消息队列(分区)
  • Topic 的物理分片,一个 Topic 拆分为多个 Queue
  • 作用:并发读写、实现顺序消息、负载均衡
  • 顺序消息依赖:单 Queue 内消息有序,多 Queue 无法全局有序
(3)ConsumerGroup 消费者组(日志里出现的重点

plaintext

00000000000000000000000000000477_T_APPAY_PAYMENT_ACTIVITY_STATUS_DATA_PRO_sub-payment-group
  • 同一类消费者归为一个消费组
  • 规则:
    • 集群消费:组内实例均分 Queue,提高消费并发
    • 消费位点(Offset):消费组独立维护位点,不同组互不影响
(4)Offset 偏移量
  • 消息消费位置标记,记录当前消费到队列的第几条
  • 持久化在 Broker,重启服务不会重复从头消费(正常情况)

2. 完整消息结构

  • 消息主体 Body + 消息唯一标识 MsgId + 自定义属性(Tags、Keys 等)
  • Tag 标签:Topic 内消息二次过滤,消费端按需筛选

四、消息投递 & 消费机制(可靠性核心

1. 消息发送流程

  1. 生产者组装消息 → 路由寻址到 Broker
  2. Broker 接收消息 → 磁盘持久化(CommitLog)
  3. 返回投递结果给生产者

2. 消息存储机制(重点)

三大存储文件:

  1. CommitLog所有消息统一物理存储文件(核心),顺序写,性能极高
  2. ConsumeQueue:逻辑队列索引,记录消息在 CommitLog 的位置
  3. IndexFile:消息索引文件,支持按 Key / 时间检索

核心特性:磁盘顺序写 + 内存页缓存,是 RocketMQ 高吞吐的根本

3. 消费可靠性(保证消息不丢、不重复

(1)消费 ACK 机制(关键)
  • 消费者成功执行业务后,手动 / 自动提交 Offset
  • 未提交 ACK:Broker 判定消费失败,重试投递
(2)消息重试队列
  • 消费失败的消息,不会直接丢弃,进入重试队列
  • 有重试次数上限,超过次数转入死信队列 (DLQ)
  • 死信消息:人工排查处理,不再自动重试
(3)重复消费问题
  • 网络抖动、ACK 丢失会导致消息重复
  • 业务解决方案:接口幂等性(唯一主键去重)

五、五大消息类型(业务开发必用重点

1. 普通消息

最基础,无顺序、无延时,通用异步场景。

2. 顺序消息(高频重点)

  • 分类:全局顺序、分区顺序(常用)
  • 实现原理:同一类有序消息发送到同一个 MessageQueue
  • 限制:单 Queue 串行消费,并发下降

3. 延时消息

消息投递后,延迟指定时间再被消费(定时场景)

  • 不支持任意时间,内置延时等级(1s~2h 档位)

4. 批量消息

多条消息打包发送,提升吞吐,注意单批大小限制。

5. 事务消息(RocketMQ 特色重点)

实现分布式事务最终一致性,半消息 + 回查机制,解决跨服务事务问题。流程:半消息发送 → 执行本地事务 → 提交 / 回滚消息 → 定时回查补状态。


六、高可用设计(运维 & 架构重点)

  1. NameServer 集群:多节点部署,单点故障不影响路由
  2. Broker 主从集群
    • Master 宕机:Slave 接管读请求,保证消费不中断
    • 同步双写:主从同时落盘,防止消息丢失
  3. 消息持久化:断电 / 重启消息不丢失
  4. 故障重试:生产、消费失败均有重试机制

七、结合日志的对应解读(落地对照)

  1. RocketmqRemoting:RocketMQ 原生 Netty 通信层,负责客户端与 Broker(10.62.212.65:10911)长连接
  2. NettyClientWorkerThread:RocketMQ 客户端网络线程
  3. closeChannel应用优雅停机 → 消费者 Bean 执行 close () → 主动断开与 Broker 的长连接
  4. 消费组:日志中超长串即为 ConsumerGroup,用来区分消费实例、维护消费位点

关键总结:看到的 “监听关闭”= 应用进程退出,RocketMQ 客户端主动断开长连接,并非 MQ 服务端故障。


八、高频核心考点 / 总结(极简背诵版)

  1. 四大组件:NameServer、Broker、Producer、Consumer
  2. 核心存储:CommitLog(主存储)+ ConsumeQueue(索引)
  3. 分组概念:Topic(大类)、Tag(小过滤)、ConsumerGroup(消费组)
  4. 消费模式:集群消费、广播消费
  5. 可靠性保障:持久化、ACK、重试队列、死信队列、主从架构
  6. 特色能力:顺序消息、延时消息、事务消息
  7. 本质:消费者是客户端长连接,不监听本地端口,主动连接 Broker 服务端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值