訊息佇列屬性及常見訊息佇列介紹
什麼是訊息佇列?
訊息佇列是在訊息的傳輸過程中儲存訊息的容器,用於接收訊息並以檔案的方式儲存,一個佇列的訊息可以同時被多個訊息消費者消費。分散式訊息服務DMS則是分散式的佇列系統,訊息佇列中的訊息分佈儲存,且每條訊息儲存多個副本,以實現高可用性,如下圖所示。
一般來說,訊息佇列具有如下屬性:
訊息順序
普通佇列支援“分割槽有序”和“全域性佇列”兩種模式,ActiveMQ佇列和Kafka佇列均為分割槽有序。
分割槽有序的佇列通過分散式處理,支援更高的併發,但由於佇列的分散式特性,DMS無法保證能夠以接收訊息的精確順序進行消費。如果使用者要求保持順序,建議在每條訊息中放置排序資訊,以便在收到訊息時對訊息重新排序。
全域性有序的佇列對訊息消費遵循先入先出規則(FIFO),適用於對消費順序要求較高的場景。
至少一次傳遞
在極少數情況下,當用戶接收或刪除訊息時,儲存訊息副本的伺服器之一可能不可用。如果出現這種情況,則該不可用伺服器上的訊息副本將不會被刪除,並且在接收訊息時可能會再次獲得該訊息副本。
這被稱為“至少一次傳遞”,因此,使用者的應用程式應該設計為冪等的應用程式(即,如果應用程式多次處理同一條訊息,則不得受到不利影響)。
訊息較少時單次消費不能獲取指定數量的訊息
從訊息佇列中消費訊息時,DMS每次從部分訊息儲存分割槽中讀取訊息返回訊息給消費者,如果佇列中的訊息數比較少,則單次消費可能會少於指定條數,但多次消費最終可獲取全部訊息。
常見訊息佇列介紹
普通佇列
包括分割槽有序和全域性有序,分割槽有序的普通佇列具有更高的併發效能,不保證先入先出(FIFO)的嚴格順序,全域性有序的普通佇列保證訊息先入先出(FIFO)的嚴格順序。DMS支援普通佇列和有序佇列,提供高併發、低延時、穩定安全的訊息中介軟體服務。
ActiveMQ佇列
使用AMQP協議的佇列。Advanced Message Queuing Protocol,是統一訊息服務的應用層標準的高階訊息佇列協議,是應用層協議的一個開放標準,為面向訊息的中介軟體設計。DMS相容ActiveMQ,簡單易用,按需使用,支援水平擴充套件,安全可靠,無憂運維。
Kafka佇列
支援使用開源kafka客戶端進行生產訊息和消費訊息。支援高吞吐和高可靠兩種模式,高吞吐模式的訊息副本非同步落盤,具有較高的效能,高可靠模式的訊息多副本同步落盤,保證訊息的可靠性。DMS相容Kafka,即開即用,安全可靠,支援高吞吐、高可靠兩種應用場景。
RabbitMQ佇列
採用物理隔離方式部署,支援使用者自定義記憶體規格和自定義特性,您可以根據業務需要定製相應計算能力和儲存空間的RabbitMQ例項。DMS相容RabbitMQ,提供獨佔資源,保證佇列高效能。
分散式訊息服務DMS提供可靠且可擴充套件的託管訊息佇列。服務應用廣泛,在實際選型時是一個不錯的選擇。想要了解更多,歡迎點開分散式訊息服務DMS檢視。