本文介绍使用腾讯云 TDMQ RabbitMQ 版对比开源 RabbitMQ 具备的优势。
功能
对比类型 | 对比项 | TDMQ RabbitMQ Serverless 版 | 开源/自建 RabbitMQ |
兼容性 | 协议 | 兼容 AMQP 0-9-1 协议和开源 RabbitMQ 客户端。 | AMQP 0-9-1、AMQP 1.0、STOMP、MQTT、HTTP(S)、WebSockets。 |
| 客户端 | 存算分离架构。 | 基于社区版 RabbitMQ,存在不抗消息堆积、脑裂等风险。 |
消息能力 | 延时消息 | 通过插件或使用消息存活时间过期转移方式实现。 | |
| 事务消息 | 不支持。 | 支持。 |
| 顺序消息 | 不支持。 | 支持。 |
| 消息优先级 | 不支持。 | 支持。 |
| 消息重试机制 | 支持。消息消费超过一定时间未响应会重新投递。重试间隔时间为30分钟,最多重试16次,超过则会丢弃或发送至死信 Exchange。 | 无消息重试机制。无法跳过有问题消息的消费处理,无法处理新生产的消息,从而会导致消息大量堆积引起内存问题,导致服务宕机。 |
权限 | 权限控制 | 开源控制台授权。 | |
可观测能力 | 监控指标 | 指标丰富,包含集群、Vhost、Exchange 和 Queue四个维度,便于快速定位问题 | 需要通过手动配置指标: 方案一:通过Management UI能够获取丰富的指标,但需要自建指标存储及展示的系统。 方案二:通过Prometheus+Grafana实现。 |
| 消息轨迹 | 支持按 MessageID 精确查询消息,或按 Queue查询海量消息。 白屏化展示消息生命周期,包含生产、入队、投递和消费阶段,便于快速定位问题。 支持死信、重投递、延时消息等特殊场景的轨迹查看。 | 消息轨迹信息以文本格式存储在服务器的 log 文件中,查询和定位问题效率较低。 |
稳定性
对比类型 | 对比项 | TDMQ RabbitMQ Serverless 版 | 开源/自建 RabbitMQ |
高可用 | 底层架构 | 存算分离架构。 | 基于社区版 RabbitMQ,存在不抗消息堆积、脑裂等风险。 |
| 跨AZ高可用部署 | 默认支持跨多可用区部署。 | 需要自行设计部署方案和参数。 |
| 服务可用性 | SLA 99.95%。 | 自行运维和保障。 |
| 数据可靠性 | 数据三副本存储。 | 多副本同步会影响集群性能。 |
| 消息堆积 | 高性能不受海量消息堆积影响。 | 抗堆积能力较弱,容易引发内存负载问题。 |
可扩展性 | TPS 上限 | 理论无上限,能够横向扩容。 | 有上限,受底层机器性能影响。 |
| 扩缩容 | 同版本可快速横向扩缩容。(缩容即将支持) | 需手动升级底层机型规格。 涉及开源控制台重启。 |
可运维性 | 开箱即用 | 成熟化的部署、监控方案,开箱即用。 | 需要使用开源控制台管理资源。 |
| 监控告警 | 提供白屏化监控大盘界面,支持 4 个维度,6 大类别,90+ 监控指标。 | 监控指标的获取方法: 方案一:使用 Management UI 获取指标,自行搭建指标存储和展示系统。 方案二:接入外部 Prometheus 和 Grafana 实现。 |
| 消息查询 | 支持消息按 Message ID 精确查询或依据队列查询,消息轨迹能够展示消息完整的生命周期。 | 在服务器里的 log 文件中查询文本格式的消息轨迹信息,查询和定位问题效率较低。 |
| 消息轨迹(即将支持) | | |
服务 | 服务支持 | 腾讯云7*24小时专业工单服务支持。 | 自行运维。 |
Exchange
对比类型 | 对比项 | TDMQ RabbitMQ Serverless 版 | 开源/自建 RabbitMQ |
基础配置 | 类型 | 支持 direct、fanout、headers、topic 这几种类型。 | 支持 direct、fanout、headers、topic、x-delayed-message、x-consistent-hash 这几种类型。 |
| 持久化 | 默认持久化。 | 支持配置持久化与非持久化。 |
参数配置 | Internal | 不支持。 | 支持。 |
| Alternate exchange | 不支持。 | 支持。 |
Queue
对比类型 | 对比项 | TDMQ RabbitMQ Serverless 版 | 开源/自建 RabbitMQ |
基础配置 | 类型 | 无需配置,分布式高可用集群。 | 需要配置,支持以下类型: Classic:经典镜像队列。 Quorum:仲裁队列。 |
| 节点 | 无需配置,服务免运维。 | 需要配置,可选择节点。 |
| 持久化 | 默认持久化。 | 支持持久化和非持久化。 |
参数配置 | Max length | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 |
| Max length bytes | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 |
| Max in memory length | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 |
| Max in memory bytes | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 |
| Delivery limit | 无需配置,固定值,默认16次。 | 需要配置。 |
| Message TTL | 支持。 | 支持。 |
| Dead letter exchange | 支持。 | 支持。 |
| Dead letter routing key | 支持。 | 支持。 |
| Single active consumer | 不支持。 | 支持。 |
对比项 | 功能描述 | TDMQ RabbitMQ 开源托管版 | 开源/自建 RabbitMQ |
高可用 | 跨 AZ 高可用部署 | 支持跨 AZ 高可用部署,具备成熟的故障恢复方案。 | 需要自行设计部署方案和参数。 |
| 服务可用性 | 三节点集群保证 SLA 99.95% | 自行运维和保障。 |
| 数据可靠性 | 三节点默认可支持队列持久化,镜像队列。 | 需要自行配置镜像策略的参数。 |
可扩展性 | 扩缩容 | 支持产品化水平/垂直扩缩容,按需变配集群规格。 | 需手动升级底层机型规格。 涉及开源控制台重启。 |
可运维性 | 开箱即用 | 成熟化的部署、监控方案,开箱即用。 | 需要使用开源控制台管理资源。 |
| 监控告警 | 支持实例、节点、Vhost、Queue、Exchange 等多维度监控告警。 | 监控指标的获取方法: 方案一:使用 Management UI 获取指标,自行搭建指标存储和展示系统。 方案二:接入外部 Prometheus 和 Grafana 实现。 |
| 消息查询 | 可根据队列和消息参数查询消息信息及详情。 | 不支持。 |
安全合规性 | 管控操作权限控制 | 控制台操作基于腾讯云 CAM 控制权限,安全合规。 | 管控操作权限难以精细化控制。 |
| 操作可追溯 | 不支持。 | |
服务 | 服务支持 | 腾讯云7*24小时专业工单服务支持。 | 自行运维。 |