1. 程式人生 > >淺談消息隊列的原理及優勢

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

消息隊列 MQ

什麽是消息隊列
這樣的場景你一定不陌生:小王到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小時後將會被刪除。


分布式消息服務DMS的優勢

DMS 自建開源消息隊列
安全性 支持VPC虛擬網絡等公有雲安全服務 自行管理設置安全配置,安全防護效果依賴於安全專員水平
運維 提供雲審計、雲監控等服務,方便運維 需額外的運維人員,自行研發對應的運維監控系統
穩定 集群模式下實現了1個節點冗余鏡像,確保數據的可靠性 自行保障
成本 具備多種配置可選擇:單機、集群;可按需或包周期進行購買;且公測期間完全免費;用戶可按需選擇具體配置。 成本較高
擴展性 具備專業的擴容方案 需自行設計並操作擴容方案
性能 後端使用華為高性能ECS主機,吞吐量高,性能強勁,集群穩定性也有很好保障 數據可靠性與性能難以兼顧



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

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