全部產品
Search
文件中心

ApsaraMQ for RabbitMQ:開源對比

更新時間:Nov 23, 2024

雲訊息佇列 RabbitMQ 版是一款基於高可用分布式儲存架構實現的AMQP 0-9-1協議的訊息產品,能夠相容開源RabbitMQ用戶端,與開源RabbitMQ相比,能夠解決各種穩定性痛點(例如訊息堆積、腦裂等問題),同時具備高並發、分布式、靈活擴縮容等雲Message Service優勢。本文從雲訊息佇列 RabbitMQ 版和開源RabbitMQ的功能、穩定性、效能、Exchange和Queue等幾個方面入手,協助您更好地瞭解雲訊息佇列 RabbitMQ 版的能力。

關於雲訊息佇列 RabbitMQ 版的更多資訊,請參見產品優勢

功能

專案

雲訊息佇列 RabbitMQ 版

開源RabbitMQ

協議

AMQP 0-9-1

AMQP 0-9-1、AMQP 1.0、STOMP、MQTT、HTTP(S)、WebSockets。

用戶端SDK支援情況

支援開源所有語言和所有版本的SDK。

開源SDK。

定時訊息

秒級精確度。相容外掛程式x-delayed-message用法和TTL兩種使用方式。更多資訊,請參見延時訊息

通過外掛程式或使用訊息存活時間到期轉移方式實現。

事務訊息

不支援。

支援。

順序訊息

不支援。

支援。

訊息優先順序

不支援。

支援。

訊息重試機制

訊息消費超過一定時間未響應會重新投遞。逾時時間和重試次數的詳細解釋,請參見消費重試策略

無訊息重試機制。無法跳過有問題訊息的消費處理,無法處理新生產的訊息,從而會導致訊息大量堆積引起記憶體問題,導致Message Service宕機。

使用者名稱、密碼

通過阿里雲存取控制(RAM)的AccessKey和AccessKey Secret產生使用者名稱和密碼,詳情請參見靜態使用者名稱密碼管理

自訂使用者名稱密碼。

許可權

阿里雲存取控制(RAM)。授權規則,請參見使用RAM進行存取控制

開源控制台授權。

可觀測能力:Dashboard

  • 指標豐富,維度可精確到Vhost、Exchange和Queue,便於您快速發現和定位問題。

  • 基於Prometheus+Grafana實現指標的採集和展示,開箱即用,開發成本低。

詳細資料,請參見Dashboard

支援以下兩種方案:

  • 方案一:通過Management UI能夠擷取豐富的指標,但需要自建指標儲存及展示的系統。

  • 方案二:通過Prometheus+Grafana實現。

可觀測能力:訊息軌跡

  • 軌跡資料白屏化展示,訊息完整的生命週期清晰可見,一目瞭然。

  • 提供強大的索引能力,可根據Queue、訊息ID、訊息處理耗時等完成不同維度查詢。

詳細資料,請參見訊息軌跡

訊息軌跡資訊以文字格式設定儲存在伺服器的log檔案中,查詢和定位問題效率較低。

服務和效能

專案

雲訊息佇列 RabbitMQ 版

開源RabbitMQ

叢集TPS上限

無上限。雲訊息佇列 RabbitMQ 版採用叢集分布式部署,無主架構,能夠橫向擴容、縮容叢集規模。

有上限。受機器效能限制,擴容依賴升級機器硬體規格,且有上限。

單個Queue的TPS上限

無上限。雲訊息佇列 RabbitMQ 版支援單隊列的橫向擴充,效能上無並發限制,容量無上限。

有上限,單隊列效能上限為單節點上限。

串連數

無上限。雲訊息佇列 RabbitMQ 版執行個體能承載的串連數可隨叢集規模擴大而增加,不受串連數增加的影響。

有上限。受機器效能限制,單機的串連數有上限,且無法擴容。

定時訊息

秒級精確度、高效能、開箱即用。

使用複雜。

服務可用性和資料可靠性

  • 多可用性區域高可用。

  • 存算分離架構,故障計算節點可快速摘除隔離。

  • 資料三副本儲存。

通過鏡像隊列或仲裁隊列實現,容易出現腦裂問題。

訊息堆積能力

在海量訊息堆積的情況下,始終保持高效能,不影響叢集的正常服務。

大量訊息堆積容易引起記憶體問題,可能導致服務宕機。

彈效能力

  • 通過增減叢集節點數量實現擴縮容。

  • 後付費系列按照訊息生產消費量收費,無需評估容量。

單機容量就是叢集並發容量的上限,擴容需要通過升配機器規格或拆分叢集實現。

巡檢系統

自動探索並修複死結、宕機等問題。

無。

Exchange和Queue

表 1. Exchange

專案

雲訊息佇列 RabbitMQ 版

開源RabbitMQ

Exchange類型

支援direct、fanout、headers、topic、x-delayed-message、x-consistent-hash這幾種類型。

支援direct、fanout、headers、topic、x-delayed-message、x-consistent-hash這幾種類型。

持久化

支援配置持久化與非持久化。

支援配置持久化與非持久化。

Auto Delete

支援。

支援。

Internal

支援。

支援。

Alternate exchange

支援。

支援。

Consistent hash exchange

支援。

支援。

表 2. Queue

專案

雲訊息佇列 RabbitMQ 版

開源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

不支援。

支援。