消息引擎RabbitMQ有多高深?來圍觀這篇掃盲貼
消息中間件在互聯(lián)網(wǎng)應(yīng)用中十分廣泛,標準的用法是生產(chǎn)者(productor)生產(chǎn)消息發(fā)送到隊列,消費者(consumer)從隊列中取出并處理消息,生產(chǎn)者無需關(guān)心誰來消費,消費者也不用關(guān)心消息的來源,從而達到解耦的目的。
RabbitMQ是當前***的消息引擎之一,是實現(xiàn)了AMQP(高級消息隊列協(xié)議)的消息中間件中的一種,服務(wù)器端用Erlang語言編寫,主要用于系統(tǒng)間的雙向解耦,在可靠性、靈活性、高可用等方面均有著出色的表現(xiàn)。
RabbitMQ就是在消息中間件的基礎(chǔ)用法上,增加了交換機(Exchange),Exchange會根據(jù)一定的調(diào)度策略把productor發(fā)送的消息放到一個或多個隊列當中,就是這樣的一個中間層,讓消息隊列實現(xiàn)了系統(tǒng)之間的雙向解耦。當productor產(chǎn)生大量的消息,consumer無法快速的消費這些消息時,就需要Exchange來處理和保存這些消息。RabbitMQ的組成部分如下圖所示:
華為云RabbitMQ消息引擎源于開源優(yōu)于開源:
近日,華為云分布式消息服務(wù)正式發(fā)布了RabbitMQ消息引擎, RabbitMQ消息引擎專注于應(yīng)用解耦、流量削峰、異步處理等應(yīng)用場景,為用戶提供消息生產(chǎn)消費、發(fā)布訂閱、消息持久化、消息確認機制、事物消息等功能。
DMS RabbitMQ |
自建開源RabbitMQ |
|
安全性 |
支持VPC虛擬網(wǎng)絡(luò)等公有云安全服務(wù) |
自行管理設(shè)置安全配置,安全防護效果依賴于安全專員水平 |
運維 |
提供云審計、云監(jiān)控等服務(wù),方便運維 |
需額外的運維人員,自行研發(fā)對應(yīng)的運維監(jiān)控系統(tǒng) |
穩(wěn)定 |
集群模式下實現(xiàn)了1個節(jié)點冗余鏡像,確保數(shù)據(jù)的可靠性 |
自行保障 |
成本 |
具備多種配置可選擇:單機、集群;可按需或包周期進行購買;且公測期間完全免費;用戶可按需選擇具體配置。 |
成本較高 |
擴展性 |
具備專業(yè)的擴容方案 |
需自行設(shè)計并操作擴容方案 |
性能 |
后端使用華為高性能ECS主機,吞吐量高,性能強勁,集群穩(wěn)定性也有很好保障 |
數(shù)據(jù)可靠性與性能難以兼顧 |
華為云全新推出的RabbitMQ引擎,***兼容開源,對于已有的基于RabbitMQ的應(yīng)用,無需代碼上的修改,即可快速接入華為云RabbitMQ服務(wù),輕松把應(yīng)用搬上云端。對于未使用過RabbitMQ的用戶,提供簡單友好的控制臺操作和詳盡的入門操作指南,用戶可通過樣例程序,快速搭建出發(fā)布訂閱、單發(fā)送單接收、單發(fā)送多接收、路由發(fā)送接收等功能。
RabbitMQ完成分布式系統(tǒng)異步通信
在大中型分布式系統(tǒng)中,RabbitMQ可以幫助各個子系統(tǒng)的數(shù)據(jù)及時同步到后臺模塊,并提供數(shù)據(jù)通道幫助觸發(fā)其他的業(yè)務(wù)流程,如函數(shù)處理、消息通知等。華為云RabbitMQ的如下特點,可以有效幫助分布式系統(tǒng)實現(xiàn)異步通信:
- 豐富消息類型
廣播消息、延時消息、消息重投等消息特性,使應(yīng)用可以靈活控制異步通信的時間。
- 高并發(fā)
單隊列***性能至10萬TPS,并且可以通過隊列數(shù)平滑擴展能力,有效提升整個系統(tǒng)的并發(fā)能力。
- 低時延
消息投遞時延可至毫秒級,保證消息的及時性。
應(yīng)用通過RabbitMQ解耦
在單體應(yīng)用中,業(yè)務(wù)流程耦合會導(dǎo)致系統(tǒng)對用戶的請求響應(yīng)慢,可以將系統(tǒng)拆分為多個子系統(tǒng),用RabbitMQ作為子系統(tǒng)間的異步通信通道進行系統(tǒng)解耦,從而有效提升整個系統(tǒng)的響應(yīng)速度。華為云RabbitMQ服務(wù)可以做到:
- 加快系統(tǒng)響應(yīng)
系統(tǒng)通過分布式解耦和并行處理請求,加快系統(tǒng)對用戶請求的響應(yīng)速度。
- 降低系統(tǒng)耦合
子系統(tǒng)間通過RabbitMQ進行通信,避免系統(tǒng)之間相互耦合和影響。
- 數(shù)據(jù)緩存
消息隊列提供億級消息堆積能力,讓應(yīng)用從容應(yīng)對流量洪峰。
流量削峰填谷 防止應(yīng)用崩潰
在秒殺或者團搶活動中,經(jīng)常會發(fā)生因為流量突然暴增,導(dǎo)致應(yīng)用不能正常訪問的現(xiàn)象。為了解決這樣的問題,就需要在應(yīng)用的前端加入消息隊列。服務(wù)器在接收到用戶的請求之后,先把請求放到消息隊列中,秒殺的業(yè)務(wù)模塊根據(jù)消息隊列的請求信息,做后續(xù)的處理。如果遇到消息隊列長度超出***的限制,可以直接拋棄用戶請求或者跳轉(zhuǎn)到友好的提示頁面,從而有效地控制活動的參與人數(shù),提升用戶體驗,并且大幅緩解瞬時流量洪峰對應(yīng)用的壓力。
華為云RabbitMQ消息引擎,完全兼容開源,提供獨占資源,保證隊列高性能,為企業(yè)和互聯(lián)網(wǎng)應(yīng)用提供省心、省力的消息中間件,減少開發(fā)、運維的成本,避免了企業(yè)自建中間件時所面臨的安全、運維等問題。目前RabbitMQ向用戶免費開放,歡迎訪問華為云官網(wǎng)免費使用:
分布式消息服務(wù) DMS
https://www.huaweicloud.com/product/dms.html