AMQP-0-9-1版本RabbitMQ与开源RabbitMQ的差异
AMQP-0-9-1版本RabbitMQ是一款基于高可用分布式存储架构实现的AMQP 0-9-1协议的消息产品,能够兼容开源的RabbitMQ客户端。与开源RabbitMQ相比,能够解决各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
以下从功能、稳定性、Exchange和Queue几个方面给出具体的对比分析,供用户选型参考。
功能
| 功能项 | AMQP-0-9-1版本 | 开源RabbitMQ | 
|---|---|---|
| 客户端SDK | 支持开源所有语言和所有版本的SDK。 | 支持开源SDK。 | 
| 定时消息 | 支持任意定时时间,秒级精确度,海量堆积。 | 通过插件或使用消息存活时间过期转移方式实现。 | 
| 事务消息 | 不支持。 | 支持。 | 
| 顺序消息 | 不支持。 | 支持。 | 
| 消息优先级 | 支持。 | 支持。 | 
| 消息重试机制 | 支持。消息消费超过一定时间未响应会重新投递。重试间隔时间为1分钟,最多重试16次,超过则会丢弃或发送至死信Exchange。 | 不支持。 | 
| 监控指标 | 指标丰富,维度可精确到Vhost、Exchange和Queue,便于您快速发现和定位问题。 | 支持以下两种方案: 
 | 
| 消息轨迹 | 轨迹数据白屏化展示,消息完整的生命周期清晰可见,一目了然。提供强大的索引能力,可根据Queue、消息ID、消息处理耗时等完成不同维度的查询。 | 消息轨迹信息以文本格式存储在服务器的log文件中,查询和定位问题效率较低。 | 
稳定性
| 功能项 | AMQP-0-9-1版本 | 开源RabbitMQ | 
|---|---|---|
| 消息堆积 | 海量消息堆积能力,高性能不受消息堆积影响。 | 抗堆积能力差,容易引发内存问题而导致宕机。 | 
| 弹性能力 | 集群分布式无主架构,能够横向快速地扩容集群规模。 | 通过变更机器规格来扩容、缩容。 | 
| 服务可用性 | 99.95%集群分布式高可用架构,多可用区高可用。 | 使用Erlang语言开发,运维靠经验摸索,且无法避免开源架构的稳定性痛点。 | 
| 数据可靠性 | 数据三副本,不会影响TPS性能。 | 配置副本数变多会导致TPS下降。 | 
| 巡检系统 | 自动发现并修复死锁、宕机等问题。 | 无。 | 
Exchange
| 功能项 | AMQP-0-9-1版本 | 开源RabbitMQ | 
|---|---|---|
| Exchange类型 | 支持的类型:direct、fanout、headers、topic、x-delayed-message、x-consistent-hash。 | 支持的类型:direct、fanout、headers、topic、x-delayed-message、x-consistent-hash。 | 
| 持久化 | 默认持久化。 | 支持配置持久化与非持久化。 | 
| 自动删除 | 支持。 | 支持。 | 
| Internal | 不支持。 | 支持。 | 
| Alternate exchange | 不支持。 | 支持。 | 
| Consistent hash exchange | 支持。 | 支持。 | 
Queue
| 功能项 | AMQP-0-9-1版本 | 开源RabbitMQ | 
|---|---|---|
| 队列类型 | 无需配置,分布式高可用集群。 | 需要配置,支持以下类型: 
 | 
| 节点 | 无需配置,服务免运维。 | 需要配置,可选择节点。 | 
| 持久化 | 默认持久化。 | 支持持久化和非持久化。 | 
| Max length | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 | 
| Max length bytes | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 | 
| Max in memory length | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 | 
| Max in memory bytes | 无需配置,支持海量消息堆积。 | 需要配置,防止消息堆积过多而引起的内存问题导致宕机。 | 
| Delivery limit | 无需配置,固定值,默认16次。 | 需要配置。 | 
| Dead letter exchange | 支持。 | 支持。 | 
| Dead letter routing key | 支持。 | 支持。 | 
| Single active consumer | 不支持。 | 支持。 | 
 
  