雲訊息佇列 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 |
詳細資料,請參見Dashboard。 | 支援以下兩種方案:
|
可觀測能力:訊息軌跡 |
詳細資料,請參見訊息軌跡。 | 訊息軌跡資訊以文字格式設定儲存在伺服器的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 |
隊列類型 | 無需配置,分布式高可用叢集。 | 需配置。
|
節點 | 無需配置,服務免營運。 | 需配置,可選擇節點。 |
重試策略 | 消費逾時會重投訊息,重試策略,請參見消費重試策略。 | 無逾時重投策略。 |
是否持久化 | 支援持久化和非持久化。 | 支援持久化和非持久化。 |
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 | 不支援。 | 支援。 |