rocketmq-5.4.0开发环境搭建
1. RocketMQ namesrv + broker + proxy + dashboard 整体架构
env
- docker/docker-compose
- rocketmq-5.4.0
- rocketmq-dashboard
1.1 组件角色拆解
NameServer(控制面 · 轻量)
负责:- Broker 注册与心跳
- Topic → Broker 路由信息
特点: - 无状态
- 多实例互不通信(客户端轮询)
- 故障影响有限(缓存兜底)
Broker(数据面 · 核心)
负责:- 消息存储(CommitLog / ConsumeQueue / IndexFile)
- Producer 写入、Consumer 拉取
- 主从复制、刷盘策略是整个系统的“发动机 + 仓库”。
Proxy(接入面 · 抽象层)
RocketMQ 5.x 的关键角色:- 统一客户端协议(Java / gRPC / HTTP)
- 屏蔽 Broker 拓扑与变更
- 天然适合做 公网 / 跨 VPC / 多语言 SDK 入口
- 未来演进方向:多租户、鉴权、限流
Dashboard(运维面 · 观察者)
负责:- Topic / Group / Broker 管理
- 消息堆积、TPS、延迟可视化
- 运维操作入口
不参与消息链路,挂不挂不影响生产消费。
2.生产级逻辑拓扑
flowchart LR
subgraph ClientSide["客户端侧"]
P[Producer]
C[Consumer]
end
subgraph AccessLayer["接入层"]
Proxy1[Proxy-1]
Proxy2[Proxy-2]
end
subgraph ControlPlane["控制面"]
NS1[NameServer-1]
NS2[NameServer-2]
end
subgraph DataPlane["数据面"]
B1M[Broker-1 Master]
B1S[Broker-1 Slave]
B2M[Broker-2 Master]
B2S[Broker-2 Slave]
end
subgraph Ops["运维面"]
Dash[Dashboard]
end
P --> Proxy1
P --> Proxy2
C --> Proxy1
C --> Proxy2
Proxy1 --> NS1
Proxy1 --> NS2
Proxy2 --> NS1
Proxy2 --> NS2
Proxy1 --> B1M
Proxy1 --> B2M
Proxy2 --> B1M
Proxy2 --> B2M
B1M --> B1S
B2M --> B2S
Dash --> NS1
Dash --> NS2
Dash --> B1M
Dash --> B2M
3. 消息流转路径(写 / 读)
3.1 Producer 写入路径
1 | Producer |
3.2 Consumer 拉取路径
1 | Consumer |
4. 为什么 Proxy 是“必选项”(5.x 版本)
存算分离
解耦客户端与 Broker
- Broker IP 可内网化
- 迁移、扩缩容对客户端无感
网络与安全
- 公网只暴露 Proxy
- Broker 永不直连外部
SRE 视角的好处
- Proxy 层做限流、熔断、灰度
- 未来可接入 API Gateway / Service Mesh
一句话总结:
Proxy 把 RocketMQ 从“客户端直连中间件”升级为“标准消息服务”。
5.rocketmq-docker-compsoe.yml
5.1创建依赖目录及授权
mkdir -p data/{namesrv,broker,proxy}/logs
mkdir -p data/broker/store/ # 消息持久化
chown -R 3000:3000 data
5.2启动
1 | services: |
docker network create -d bridge --subnet 192.168.250.0/23 --gateway 192.168.250.1 apps
docker-compose pull && docker-compose up -d
5.3访问dashboard
