您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“數據庫中常見的消息隊列有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“數據庫中常見的消息隊列有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
什么是消息隊列?
消息隊列是在消息的傳輸過程中保存消息的容器,用于接收消息并以文件的方式存儲,一個隊列的消息可以同時被多個消息消費者消費。分布式消息服務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,提供獨占資源,保證隊列高性能。
讀到這里,這篇“數據庫中常見的消息隊列有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。