RocketMQ简介

什么是 RocketMQ?

RocketMQ 是阿里巴巴开源 的分布式消息中间件,后捐赠给 Apache 基金会成为顶级项目。它是一个金融级 的可靠消息系统,设计用于处理海量数据高并发场景。

核心架构

1. 四大核心组件
复制代码
NameServer(名字服务) → 轻量级注册中心
    ↓
Broker(代理服务器) → 消息存储和转发
    ↓
Producer(生产者) → 消息发送者
    ↓
Consumer(消费者) → 消息接收者
2. NameServer
  • 相当于通讯录服务发现中心

  • 无状态设计,集群部署

  • 功能:

    • 管理所有 Broker 的路由信息

    • 生产者/消费者通过它查找 Broker

    • 心跳检测 Broker 健康状态

3. Broker
  • 消息的存储和转发中心(核心组件)

  • 主从架构

    • Master:处理读写请求

    • Slave:数据备份,只读(故障时自动切换)

  • 每个 Broker 有多个队列

4. 消息模型
复制代码
主题(Topic) → 消息的分类
    ↓
消息队列(MessageQueue) → 主题的分区(类似Kafka的Partition)
    ↓
消费组(ConsumerGroup) → 一组消费者共同消费一个主题

核心概念详解

1. 主题(Topic)
  • 消息的逻辑分类

  • 一个主题包含多个消息队列(分布式存储的基础)

2. 消息队列(MessageQueue)
  • 主题的物理分区

  • 是并行消费和水平扩展的基础

  • 每个队列是有序的,但队列之间无序

3. 标签(Tag)
  • 消息的二级分类(比 Topic 更细粒度)

  • 用于过滤消息,提高消费效率

4. 消费位点(Offset)
  • 记录消费者在队列中的消费进度

  • RocketMQ 同时支持:

    • Broker 端存储(集群模式)

    • 本地存储(广播模式)

消息类型

1. 普通消息
  • 基本消息类型

  • 无特殊功能要求

2. 顺序消息
  • 全局顺序:整个主题有序(性能低)

  • 分区顺序:同一队列内有序(常用)

  • 应用场景:订单状态流转

3. 定时/延时消息
  • 指定时间或延迟一段时间后投递

  • 支持固定延时等级(如:5s、10s、1m等)

4. 事务消息
  • 两阶段提交保证分布式事务一致性

  • 流程:

    1. 发送半消息(对消费者不可见)

    2. 执行本地事务

    3. 提交/回滚消息

核心特性

1. 高可用设计
  • 多主多从架构:避免单点故障

  • 同步双写:主从数据实时同步

  • 自动故障转移:Master 宕机,Slave 自动接管

2. 海量消息堆积能力
  • 支持百万级消息堆积

  • 高性能存储设计(CommitLog + ConsumeQueue)

  • 磁盘顺序写,性能接近内存

3. 高性能
  • 单机支持 10万+ TPS(每秒事务数)

  • 低延迟(毫秒级)

4. 消息轨迹
  • 完整追踪消息的生命周期

  • 便于排查问题和监控

5. 丰富的消息过滤
  • Tag 过滤

  • SQL92 语法过滤(基于消息属性)

消费模式

1. 集群消费(Clustering)
  • 默认模式

  • 一条消息只被消费组内的一个消费者消费

  • 实现负载均衡

2. 广播消费(Broadcasting)
  • 一条消息被消费组内的所有消费者消费

  • 每个消费者都有全量消息

与 RabbitMQ 的关键差异

特性 RocketMQ RabbitMQ
设计目标 海量数据、高吞吐 企业集成、复杂路由
吞吐量 10万+ TPS 万级 TPS
消息堆积 百亿级 百万级
顺序消息 原生支持 有限支持
延迟消息 多个固定等级 灵活但复杂
事务消息 原生支持 插件支持
协议 自定义协议 AMQP 协议
路由功能 相对简单 非常丰富

典型应用场景

1. 电商交易系统
  • 订单创建、支付、发货等流程解耦

  • 保证数据最终一致性

2. 金融核心系统
  • 资金清算、对账处理

  • 要求高可靠性和强一致性

3. 大数据采集
  • 日志收集、行为数据采集

  • 海量数据缓冲和转发

4. 实时计算
  • 流式计算的数据源

  • 与 Flink、Spark 等集成

5. 物联网(IoT)
  • 海量设备消息接入

  • 设备状态同步

消息生命周期

复制代码
生产者 → 消息 → NameServer → Broker → 持久化存储
    ↓
消费者 ← 拉取消息 ← 消费位点管理 ← 消息过滤

优势总结

  1. 金融级可靠:经过阿里巴巴双11万亿级流量验证

  2. 海量堆积:支持百亿级消息存储

  3. 高性能:低延迟、高吞吐

  4. 分布式:天然支持水平扩展

  5. 功能丰富:顺序、事务、定时消息等

  6. 生态完整:丰富的周边工具和客户端

适用场景建议

  • 选择 RocketMQ 当:

    • 需要处理海量消息

    • 吞吐量要求极高

    • 需要顺序消息事务消息

    • 系统规模大,需要水平扩展

    • 金融级可靠性要求

RocketMQ 就像一个高吞吐量的消息高速公路系统,专为大规模、高性能的分布式场景设计,特别适合互联网、金融、电商等需要处理海量消息的业务场景。

相关推荐
TracyCoder1234 天前
RocketMQ技术原理简单解析:从架构到核心流程
架构·wpf·rocketmq
zzhongcy4 天前
RocketMQ、Kafka 和 RabbitMQ 等中间件对比
kafka·rabbitmq·rocketmq
小股虫4 天前
RocketMQ消息可靠性实战:从发送到消费的全流程保障
rocketmq
u***u6855 天前
后端在消息队列中的可靠性保证
swiftui·ar·rocketmq
milanyangbo5 天前
从硬盘I/O到网络传输:Kafka与RocketMQ读写模型及零拷贝技术深度对比
java·网络·分布式·架构·kafka·rocketmq
Mr.朱鹏5 天前
RocketMQ可视化监控与管理
java·spring boot·spring·spring cloud·maven·intellij-idea·rocketmq
蜂蜜黄油呀土豆5 天前
RocketMQ 详解:从异步解耦到存储与消费全链路解析
消息队列·rocketmq·分布式账本·分布式系统·幂等设计
Mr.朱鹏6 天前
RocketMQ安装与部署指南
java·数据库·spring·oracle·maven·rocketmq·seata
今天你TLE了吗6 天前
通过RocketMQ延时消息实现优惠券等业务MySQL当中定时自动过期
java·spring boot·后端·学习·rocketmq