第一章: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。
👉 安装与部署