消息队列 RocketMQ 版(TDMQ for RocketMQ,简称 TDMQ RocketMQ 版)是一款分布式高可用的消息队列服务, 基于 Apache RocketMQ 的 4.x 和 5.x 架构提供不同的产品形态,支持 RocketMQ 4.4.x 及以上版本的客户端零改造接入,同时具备计算存储分离,灵活扩缩容的底层优势。TDMQ RocketMQ 版最多可以支持百万级 TPS 的吞吐量,适用于各类大规模、低延时、对可靠性要求高的在线消息业务场景。
产品特性
免运维
支持一键创建集群,开箱即用。
按 TPS 规格快速扩缩容,提供极致弹性。
5.x TPS 支持弹性区间,应对突发流量。
5.x 存储 Serverless化,支持按需使用,按量付费。
特性丰富
支持多种消息类型:事务/定时/延时/顺序消息。
支持多种消费模式:Tag 过滤、SQL 92 过滤、集群消费、广播消费。
可观测性
提供全面的监控指标,快速发现问题。
支持可视化消息轨迹,串联上下游业务,更好的排查和定位问题。
高可用
支持跨可用区部署,抵御机房级故障。
容器化秒级自动重启,单节点宕机时容量和数据不受损。
支持集群限流保护,提升集群健康度。
支持跨集群消息复制,满足灾备需求。
安全管控
集成腾讯云的 CAM 系统,支持操作级/资源级的权限管理能力。
可视化的 ACL 管理页面,支持收发消息的权限管理。
公网访问支持白名单控制。
平滑迁移
开源兼容,0业务代码修改。
提供元数据迁移工具,降低迁移成本。
提供集群平滑迁移方案,低侵入可回滚,减少业务侵入。
技术架构
消息队列 RocketMQ 版的系统部署架构图如下:

消息队列 TDMQ RocketMQ 版 5.x 系列引入了新的 gRPC 协议和 Proxy 组件,实现了存算分离的架构,对 RocketMQ 的运维和使用都会带来巨大的变化。
其中涉及的各个概念如下:
Producer 集群: 客户侧应用,负责生产并发送消息。
Consumer 集群:客户侧应用,负责订阅和消费处理消息。
NameServer 集群: 服务端应用,负责路由寻址和 Broker 心跳注册。为保证高可用,默认跨可用区部署。
心跳注册:NameServer 相当于注册中心的角色,各个角色的机器都要定时向 NameServer 上报自己的状态,如果超时未上报,NameServer 会认为某个机器出现故障不可用,从而将这个机器从可用列表中删除。
路由寻址:每个 NameServer 中都保存着 Broker 集群的整个路由信息和用于客户端查询的队列信息,生产者和消费者通过 NameServer 去获取整个Broker 集群的路由信息,从而进行消息的投递和消费。
Proxy 集群:全新的弹性无状态代理服务,为保证高可用,默认跨可用区部署。将 4.x 中的 Broker 职责进行拆分,对于客户端协议适配、权限管理、消费管理等计算逻辑进行抽离。
Broker集群:与 4.x 产品系列相比,在 5.x 系列中,Broker 更专注于存储能力的持续优化。为保证高可用,默认跨可用区部署。

其中涉及的各个概念如下:
Producer 集群: 客户侧应用,负责生产并发送消息。
Consumer 集群:客户侧应用,负责订阅和消费处理消息。
NameServer 集群: 服务端应用,负责路由寻址和 Broker 心跳注册。
心跳注册:NameServer 相当于注册中心的角色,各个角色的机器都要定时向 NameServer 上报自己的状态,如果超时未上报,NameServer 会认为某个机器出现故障不可用,从而将这个机器从可用列表中删除。
路由寻址:每个 NameServer 中都保存着 Broker 集群的整个路由信息和用于客户端查询的队列信息,生产者和消费者通过 NameServer 去获取整个Broker 集群的路由信息,从而进行消息的投递和消费。
Broker 集群:服务端应用,负责接收,存储,投递消息,支持主从多副本模式,从节点可选部署,实际现网公有云上数据高可靠直接依赖云盘三副本。
管控集群: 服务端应用,可视化的管控控制台,负责运维整个集群,例如元数据的管理等。