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