第一章:RocketMQ 简介

了解 RocketMQ 的发展历程、核心特性和应用场景。

最后更新: 2024-01-15
页面目录

RocketMQ 简介

Apache RocketMQ 是阿里开源的分布式消息中间件,具有高吞吐量、高可用性等特点,广泛应用于大规模分布式系统。

什么是 RocketMQ?

RocketMQ 是一款低延迟、高可靠、可伸缩、易于部署的分布式消息中间件,由阿里巴巴开源,现为 Apache 顶级项目。

核心特性

特性 说明
高吞吐 单机支持百万级消息吞吐
低延迟 毫秒级消息投递延迟
高可用 分布式架构,支持主从切换
事务消息 支持分布式事务
顺序消息 支持局部顺序消费
延迟消息 支持消息延迟投递
消息过滤 服务端消息过滤
消息回溯 支持消息重新消费

RocketMQ 发展历史

年份 版本 主要特性
2011 RocketMQ 诞生 阿里内部使用
2016 RocketMQ 3.x 开源版本
2017 RocketMQ 4.x 架构优化,Dledger 支持
2018 RocketMQ 5.0 云原生架构,存算分离
2022 RocketMQ 5.1 轻量级 SDK,POP 消费

消息队列对比

对比项 RocketMQ Kafka RabbitMQ
吞吐量 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐
延迟 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
事务消息
延迟消息
顺序消息
消息回溯
文档完善 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
学习曲线 中等 较高 较高

应用场景

1. 异步解耦

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│   订单系统   │ ──────► │   RocketMQ  │ ──────► │   库存系统   │
│             │  异步    │             │  消费    │             │
│             │ ──────► │             │ ──────► │   物流系统   │
└─────────────┘         └─────────────┘         └─────────────┘
       │                                                   │
       └───────────────────────────────────────────────────┘
                          积分系统

2. 削峰填谷

┌─────────────────────────────────────────────────────────────────┐
│                        流量削峰                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   请求峰值                                                     │
│      │                                                         │
│      ▼                                                         │
│   ┌────────┐                                                   │
│   │ 10000  │ ──┐                                              │
│   │  TPS   │   │ 直接处理会崩溃                                 │
│   └────────┘   │                                              │
│                │                                              │
│   ┌────────┐   │        ┌────────┐                          │
│   │ 10000  │ ──┼───────►│ 消息    │                          │
│   │  TPS   │   │        │ 队列    │ ──► 稳定消费 1000 TPS   │
│   └────────┘   │        └────────┘                          │
│                │                                              │
│                ▼                                              │
│   ┌────────┐                                                 │
│   │ 0 TPS  │ ── 峰值过后自动消化                               │
│   └────────┘                                                 │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

3. 日志收集

┌──────────┐  ┌──────────┐  ┌──────────┐
│  App 1   │  │  App 2   │  │  App 3   │
└────┬─────┘  └────┬─────┘  └────┬─────┘
     │             │             │
     └─────────────┼─────────────┘
            ┌──────▼──────┐
            │  RocketMQ   │
            │  Log Topic  │
            └──────┬──────┘
      ┌────────────┼────────────┐
      │            │            │
┌─────▼─────┐ ┌────▼────┐ ┌────▼────┐
│  日志处理  │ │  日志存储 │ │  日志搜索 │
│  Consumer │ │  Kafka   │ │  ES     │
└───────────┘ └──────────┘ └─────────┘

RocketMQ 架构

┌─────────────────────────────────────────────────────────────────┐
│                    RocketMQ 架构图                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   ┌─────────────┐                                               │
│   │   Producer   │  生产者集群                                  │
│   │   Cluster   │                                               │
│   └──────┬──────┘                                               │
│          │ Producer Client                                       │
│          │                                                       │
│          ├─────────────────────────────────────────────────────►│
│          │                                                       │
│   ┌──────▼──────────────────────────────────────────────┐       │
│   │                      NameServer                      │       │
│   │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │       │
│   │  │ NameServer1 │ │ NameServer2 │ │ NameServer3 │  │       │
│   │  │  (Broker1)  │ │  (Broker2)  │ │  (Broker3)  │  │       │
│   │  └─────────────┘ └─────────────┘ └─────────────┘  │       │
│   └──────────────────────────────────────────────────────┘       │
│                              │                                   │
│          ┌───────────────────┼───────────────────┐              │
│          │                   │                   │              │
│   ┌──────▼──────┐    ┌──────▼──────┐    ┌──────▼──────┐      │
│   │  Broker 1   │    │  Broker 2   │    │  Broker 3   │      │
│   │ (Master/Slave)│  │(Master/Slave)│  │(Master/Slave)│      │
│   │              │    │              │    │              │      │
│   │ ┌──────────┐ │    │ ┌──────────┐ │    │ ┌──────────┐ │      │
│   │ │  Queue   │ │    │ │  Queue   │ │    │ │  Queue   │ │      │
│   │ │  Topic   │ │    │ │  Topic   │ │    │ │  Topic   │ │      │
│   │ └──────────┘ │    │ └──────────┘ │    │ └──────────┘ │      │
│   └──────────────┘    └──────────────┘    └──────────────┘      │
│                              │                                   │
│          │                   │                   │              │
│          │ Consumer Client ←┼───────────────────┤              │
│          │                   │                   │              │
│   ┌──────▼──────┐    ┌──────▼──────┐    ┌──────▼──────┐      │
│   │   Consumer  │    │   Consumer  │    │   Consumer  │      │
│   │   Cluster   │    │   Cluster   │    │   Cluster   │      │
│   └──────────────┘    └──────────────┘    └──────────────┘      │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

核心概念

概念 说明
Topic 消息主题,一类消息的集合
Tag 消息标签,用于消息过滤
Producer 消息生产者
Consumer 消息消费者
Broker 消息服务器,存储和转发消息
NameServer 注册中心,管理 Broker 信息
Message Queue 队列,Topic 的物理分组
Consumer Group 消费者组,一组消费者的集合

为什么选择 RocketMQ?

优势

  • 阿里巴巴生产验证:历经双十一大规模场景验证
  • 功能完善:事务消息、延迟消息、顺序消息等
  • 高性能:低延迟,高吞吐
  • 易于运维:管理控制台完善
  • 活跃社区:Apache 顶级项目,持续更新
  • 多语言支持:Java、C++、Go、Python 等

适用场景

场景 推荐配置
电商交易 事务消息 + 顺序消息
日志收集 批量消息 + 高吞吐
通知推送 延迟消息 + 广播消费
数据同步 定时任务 + 消息回溯

下一步

接下来让我们学习如何安装和部署 RocketMQ。

👉 安装与部署