淺談消息隊列的原理及優點

什麼是消息隊列

這樣的場景你必定不陌生:小王到M記點餐以後,服務員給了他一個號牌,並讓他在櫃檯桌子前方等待叫號取餐。每一個人都按照本身付款拿到的號牌順序排隊等叫號。即便店裏人再多,也不會顯得沒有秩序。架構

在上述場景中,櫃檯其實就充當了一個消息隊列(Message Queue)。小王等生產者把訂餐的消息發送到櫃檯即消息隊列裏,又從其中取了餐即消費了消息,能夠說這就是消息隊列的一個完整走向——消息被髮送到隊列中,又成功被消費者消費。「消息隊列」是在消息的傳輸過程當中保存消息的容器,隊列的主要目的是提供路由並保證消息的傳遞。若是發送消息時接收者不可用,消息隊列會保留消息,直到能夠成功地傳遞它。併發

通常來講,消息隊列是一種異步的服務間通訊方式,是分佈式系統中重要的組件,主要解決應用耦合,異步消息,流量削鋒等問題,實現高性能,高可用,可伸縮和最終一致性架構。使用較多的消息隊列有ActiveMQ、RocketMQ、RabbitMQ、Kafka等。異步

分佈式消息服務的原理

在消息隊列的基礎上,穩定可靠的消息隊列服務——分佈式消息服務應運而生。分佈式消息服務(Distributed Message Service,簡稱DMS)是一項基於高可用分佈式集羣技術的消息中間件服務,提供普通隊列、有序隊列、Kafka隊列、ActiveMQ、RabbitMQ,兼容HTTP、TCP、AMQP協議,爲分佈式應用提供低延遲、高併發的異步通訊機制。其生產和消費消息的示意圖以下圖所示。分佈式

圖片描述

消息生產者即發送消息的一方,也叫消息發送者,發送消息到指定的消息隊列中。生產者將消息M發送到隊列中。消息M在隊列中冗餘分佈,存在多個副本。高併發

圖片描述

消費消息的一方,也叫消息接收者,經過調用消息服務的消費接口從隊列中讀取消息。消費者從隊列中消費消息,獲取到消息M。在消費者消費消息M期間,消息M仍然停留在隊列中,但消息M從被消費開始的30秒內不能被該消費組再次消費,若在這30秒內沒有被消費者確認消費完成,則DMS認爲消息M未消費成功,將能夠被繼續消費。性能

圖片描述

消費者確認消息M消費完成,消息M將不能被該消費者所在消費組消費。消息M仍然保持在隊列中,而且能夠被其它消費組消費,消息在隊列中的保留時間爲至少72小時(除非隊列被刪除),72小時後將會被刪除。spa

分佈式消息服務DMS的優點

圖片描述

以上就是對分佈式消息服務原理和優勢的淺析,目前華爲雲DMS推出了免費體驗活動,想要了解更多,歡迎前往分佈式消息服務查看。3d

相關文章
相關標籤/搜索