240123 - 对比 - 阿里RabbitMQ对比开源RabbitMQ
240123 - 对比 - 阿里RabbitMQ对比开源RabbitMQ
客户端SDK支持情况
阿里RabbitMQ: 支持开源所有语言和所有版本的SDK
开源RabbitMQ: 开源SDK
定时消息
阿里RabbitMQ: 秒级精确度. 兼容插件x-delayed-message用法和TTL两种使用方式
https://help.aliyun.com/zh/apsaramq-for-rabbitmq/developer-reference/delayed-messages#concept-2333184
开源RabbitMQ: 通过插件或使用消息存活时间过期转移方式实现
事务消息
阿里RabbitMQ: 不支持
开源RabbitMQ: 支持
顺序消息
阿里RabbitMQ: 不支持
开源RabbitMQ: 支持
消息优先级
阿里RabbitMQ: 不支持
开源RabbitMQ: 支持
消息重试机制
阿里RabbitMQ: 消息消费超过一定时间未响应会重新投递. 超时时间和重试次数的详细解释
https://help.aliyun.com/zh/apsaramq-for-rabbitmq/developer-reference/message-timeout-and-retry#concept-2333185
开源RabbitMQ: 无消息重试机制. 无法跳过有问题消息的消费处理,无法处理新生产的消息,导致消息大量堆积引起内存问题,导致消息服务宕机
可观测能力:Dashboard
阿里RabbitMQ: 指标丰富,维度可精确到Vhost,Exchange和Queue 基于Prometheus+Grafana实现指标的采集和展示,开箱即用,开发成本低
开源RabbitMQ: 通过ManagementUI能获取指标,但需自建指标存储及展示系统;通过Prometheus+Grafana实现,获取指标较简单,维度不够精确.
可观测能力:消息轨迹
阿里RabbitMQ: 轨迹数据白屏化展示,消息完整的生命周期清晰可见; 提供强大索引能力,可根据Queue,消息ID,消息处理耗时完成不同维度的查询
开源RabbitMQ: 消息轨迹信息以文本格式存储在服务器的log文件中,查询和定位问题效率较低
海量消息堆积能力
阿里RabbitMQ: 海量消息堆积能力,高性能不受消息堆积影响
开源RabbitMQ: 抗堆积能力差,容易引发内存问题而导致宕机
弹性能力
阿里RabbitMQ: 集群分布式无主架构,能够横向快速地扩缩容集群规模
开源RabbitMQ: 通过变更机器规格来扩容,缩容
服务可用性
阿里RabbitMQ: 99.95%集群分布式高可用架构,多可用区高可用
开源RabbitMQ: Erlang语言,运维靠经验摸索,且无法避免开源架构的稳定性痛点
数据可靠性
阿里RabbitMQ: 数据三副本,不会影响TPS性能
开源RabbitMQ: 配置副本数变多会导致TPS下降
巡检系统
阿里RabbitMQ: 自动发现并修复死锁,宕机等问题
开源RabbitMQ: 无
集群TPS上限
阿里RabbitMQ: 无上限. 云RabbitMQ版采用集群分布式部署,无主架构,能够横向扩容,缩容集群规模
开源RabbitMQ: 有上限. 受机器性能限制,扩容依赖升级机器硬件规格,且有上限
单个Queue的TPS上限
阿里RabbitMQ: 无上限. 云RabbitMQ版支持单队列的横向扩展,性能上无并发限制,容量无上限
开源RabbitMQ: 有上限. 单队列性能上限为单节点上限
连接数
阿里RabbitMQ: 无上限. 云RabbitMQ版实例能承载的连接数可随集群规模扩大而增加,不受连接数增加的影响
开源RabbitMQ: 有上限. 受机器性能限制,单机的连接数有上限,且无法扩容
定时消息
阿里RabbitMQ: 秒级精确度,高性能,开箱即用
开源RabbitMQ: 使用复杂
Exchange类型
阿里RabbitMQ: 支持direct, fanout, headers, topic, x-delayed-message, x-consistent-hash这几种类型
开源RabbitMQ: 支持direct, fanout, headers, topic, x-delayed-message, x-consistent-hash这几种类型
持久化
阿里RabbitMQ: 支持配置持久化与非持久化
开源RabbitMQ: 支持配置持久化与非持久化
Auto Delete
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
Internal
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
Alternate exchange
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
Consistent hash exchange
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
队列类型
阿里RabbitMQ: 无需配置,分布式高可用集群
开源RabbitMQ: 需配置 Classic:经典镜像队列 Quorum:仲裁队列
节点
阿里RabbitMQ: 无需配置,服务免运维
开源RabbitMQ: 需配置,可选择节点
是否持久化
阿里RabbitMQ: 支持持久化和非持久化
开源RabbitMQ: 支持持久化和非持久化
Max length
Max length bytes
Max in memory length
Max in memory bytes
阿里RabbitMQ: 无需配置,支持海量消息堆积.
开源RabbitMQ: 需配置,防止消息堆积过多而引起的内存问题导致宕机.
Delivery limit
阿里RabbitMQ: 无需配置,固定值,默认16次.
https://help.aliyun.com/zh/apsaramq-for-rabbitmq/developer-reference/message-timeout-and-retry#concept-2333185
开源RabbitMQ: 需配置
Dead letter exchange
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
Dead letter routing key
阿里RabbitMQ: 支持
开源RabbitMQ: 支持
Single active consumer
阿里RabbitMQ: 不支持
开源RabbitMQ: 支持
