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


什么是消息隊列

這樣的場景你一定不陌生:小王到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推出了免費體驗活動,想要了解更多,歡迎前往分布式消息服務查看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM