淺談消息隊列的原理及優勢
阿新 • • 發佈:2018-06-13
消息隊列 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的優勢
這樣的場景你一定不陌生:小王到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推出了免費體驗活動,想要了解更多,歡迎前往分布式消息服務查看。
淺談消息隊列的原理及優勢