文档首页/ 分布式消息服务RabbitMQ版/ 产品介绍/ AMQP-0-9-1版本RabbitMQ与开源RabbitMQ的差异
更新时间:2024-11-06 GMT+08:00

AMQP-0-9-1版本RabbitMQ与开源RabbitMQ的差异

AMQP-0-9-1版本RabbitMQ是一款基于高可用分布式存储架构实现的AMQP 0-9-1协议的消息产品,能够兼容开源的RabbitMQ客户端。与开源RabbitMQ相比,能够解决各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。

以下从功能、稳定性、Exchange和Queue几个方面给出具体的对比分析,供用户选型参考。

功能

表1 功能差异

功能项

AMQP-0-9-1版本

开源RabbitMQ

客户端SDK

支持开源所有语言和所有版本的SDK。

支持开源SDK。

定时消息

支持任意定时时间,秒级精确度,海量堆积。

通过插件或使用消息存活时间过期转移方式实现。

事务消息

不支持。

支持。

顺序消息

不支持。

支持。

消息优先级

支持。

支持。

消息重试机制

支持。消息消费超过一定时间未响应会重新投递。重试间隔时间为1分钟,最多重试16次,超过则会丢弃或发送至死信Exchange。

不支持。

监控指标

指标丰富,维度可精确到Vhost、Exchange和Queue,便于您快速发现和定位问题。

支持以下两种方案:

  • 方案一:通过Management UI能够获取丰富的指标,但需要自建指标存储及展示的系统。
  • 方案二:通过Prometheus+Grafana实现,该方案获取的指标较简单,维度不够精确,不利于快速定位业务问题。

消息轨迹

轨迹数据白屏化展示,消息完整的生命周期清晰可见,一目了然。提供强大的索引能力,可根据Queue、消息ID、消息处理耗时等完成不同维度的查询。

消息轨迹信息以文本格式存储在服务器的log文件中,查询和定位问题效率较低。

稳定性

表2 稳定性差异

功能项

AMQP-0-9-1版本

开源RabbitMQ

消息堆积

海量消息堆积能力,高性能不受消息堆积影响。

抗堆积能力差,容易引发内存问题而导致宕机。

弹性能力

集群分布式无主架构,能够横向快速地扩容集群规模。

通过变更机器规格来扩容、缩容。

服务可用性

99.95%集群分布式高可用架构,多可用区高可用。

使用Erlang语言开发,运维靠经验摸索,且无法避免开源架构的稳定性痛点。

数据可靠性

数据三副本,不会影响TPS性能。

配置副本数变多会导致TPS下降。

巡检系统

自动发现并修复死锁、宕机等问题。

无。

Exchange

表3 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

表4 Queue差异

功能项

AMQP-0-9-1版本

开源RabbitMQ

队列类型

无需配置,分布式高可用集群。

需要配置,支持以下类型:

  • Classic:经典镜像队列。
  • Quorum:仲裁队列。

节点

无需配置,服务免运维。

需要配置,可选择节点。

持久化

默认持久化。

支持持久化和非持久化。

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

不支持。

支持。