消息隊列屬性及常見消息隊列介紹
消息隊列是在消息的傳輸過程中保存消息的容器,用於接收消息並以文件的方式存儲,一個隊列的消息可以同時被多個消息消費者消費。分布式消息服務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查看。
消息隊列屬性及常見消息隊列介紹