雲訊息佇列 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宕機。 |
|
使用者名稱、密碼 |
|
自訂使用者名稱密碼。 |
|
許可權 |
|
開源許可權管理方式。 |
|
可觀測能力: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 |
支援。 詳情請參見順序消費。 |
支援。 |
Action
|
專案 |
雲訊息佇列 RabbitMQ 版 |
開源RabbitMQ |
|
BasicCancel |
取消消費者訂閱,已經投遞的訊息重新入隊 |
取消消費者訂閱,已經投遞的訊息處於 Unacked 狀態 |