RabbitMQ系列1 什么是MQ

MQ(Messgae Queue)

什么是MQ

MQ全稱為Message Queue,即消息隊列,消息隊列是應(yīng)用程序與應(yīng)用程序之間通信的一致方法,即在消息的傳輸過程中保存消息的容器,多用于分布式系統(tǒng)之間的通信

分布式系統(tǒng)通信的兩種方式

直接遠程調(diào)用

在這里插入圖片描述

借助第三方完成間接通信

發(fā)送方稱為生產(chǎn)者
接收方稱為消費者


在這里插入圖片描述

MQ的優(yōu)勢

應(yīng)用解耦
異步提速
削峰填谷

應(yīng)用解耦

MQ相當(dāng)于一個中介,生產(chǎn)方通過MQ與消費方交互泳唠,它將應(yīng)用程序進行解耦合。

未使用MQ之前

如下圖有一個訂單系統(tǒng)直接調(diào)用庫存系統(tǒng)卿操,支付系統(tǒng)警检,物流系統(tǒng)

在這里插入圖片描述

由于訂單系統(tǒng)與庫存系統(tǒng)是耦合的,如果庫存系統(tǒng)出現(xiàn)了錯誤害淤,可能也會影響訂單系統(tǒng)不能工作

在這里插入圖片描述

如果要新接入一個系統(tǒng)我們還要改變訂單系統(tǒng)的源碼扇雕,并添加一系列代碼來實現(xiàn)調(diào)用


在這里插入圖片描述

這就暴露了一個巨大的缺點,系統(tǒng)的耦合性越高窥摄,容錯性就越低镶奉,可維護性就越低

使用MQ之后

訂單系統(tǒng)只要將對應(yīng)的數(shù)據(jù)發(fā)送到MQ即可,而庫存系統(tǒng),支付系統(tǒng)哨苛,物流系統(tǒng)只需MQ中取出對應(yīng)的數(shù)據(jù)即可

在這里插入圖片描述

如果庫存系統(tǒng)出現(xiàn)了錯誤鸽凶,也不會影響到訂單系統(tǒng),比如庫存系統(tǒng)由于訪問量過大突然卡了幾秒鐘建峭,幾秒鐘之后可能就好了玻侥,好了之后再到MQ中取出對應(yīng)的數(shù)據(jù)即可

在這里插入圖片描述

比如我們要接入一個系統(tǒng),我們不需要再修改訂單系統(tǒng)的源碼亿蒸,直接讓該系統(tǒng)去MQ中取出對應(yīng)的數(shù)據(jù)即可

在這里插入圖片描述

小總結(jié):

使用MQ使得應(yīng)用之間實現(xiàn)了解耦凑兰,提升容錯性與可維護性

異步提速

將不需要同步處理的并且耗時長的操作由消息隊列通知消息接收方進行異步處理。提高了應(yīng)用程序的響應(yīng)時間边锁。

未使用MQ

有一個訂單系統(tǒng)如圖

在這里插入圖片描述

用戶下訂單一共需要300+300+300+20=920ms姑食,訂單系統(tǒng)需要一一調(diào)用數(shù)據(jù)庫,庫存茅坛,支付音半,物流系統(tǒng),耗時極大

使用MQ之后

在這里插入圖片描述

用戶下訂單需要20+5=25ms

用戶下單后贡蓖,訂單系統(tǒng)只需要進行數(shù)據(jù)庫查詢和將數(shù)據(jù)發(fā)送到MQ即可告訴用戶下單成功曹鸠,剩下的只需讓庫存,支付摩梧,物流系統(tǒng)自行去MQ中取出數(shù)據(jù)即可

小總結(jié)

提升了用戶體驗與系統(tǒng)吞吐量

削峰填谷

未使用MQ前

有如下一個系統(tǒng)A每秒最多能處理1000個請求


在這里插入圖片描述

但是當(dāng)請求忽然增加大于了A系統(tǒng)能處理的最大請求數(shù)之后就會導(dǎo)致A系統(tǒng)崩潰


在這里插入圖片描述
在這里插入圖片描述

使用MQ之后

如訂單系統(tǒng)物延,在下單的時候就會往數(shù)據(jù)庫寫數(shù)據(jù)。但是數(shù)據(jù)庫只能支撐每秒1000左右的并發(fā)寫入仅父,并發(fā)量再高就容易宕機。低峰期的時候并發(fā)也就100多個浑吟,但是在高峰期時候笙纤,并發(fā)量會突然激增到5000以上,這個時候數(shù)據(jù)庫肯定卡死了组力。

在這里插入圖片描述

消息被MQ保存起來了省容,然后系統(tǒng)就可以按照自己的消費能力來消費,比如每秒1000個數(shù)據(jù)燎字,這樣慢慢寫入數(shù)據(jù)庫腥椒,這樣就不會卡死數(shù)據(jù)庫了。

在這里插入圖片描述

但是使用了MQ之后候衍,限制消費消息的速度為1000笼蛛,但是這樣一來,高峰期產(chǎn)生的數(shù)據(jù)勢必會被積壓在MQ中蛉鹿,高峰就被“削”掉了滨砍。但是因為消息積壓,在高峰期過后的一段時間內(nèi),消費消息的速度還是會維持在1000QPS惋戏,直到消費完積壓的消息,這就叫做“填谷”

在這里插入圖片描述

小結(jié)

應(yīng)用解耦:提高系統(tǒng)容錯性與可維護性
異步提速:提升用戶體驗和系統(tǒng)吞吐量
削峰填谷:提高系統(tǒng)穩(wěn)定性

MQ的劣勢

系統(tǒng)可用性降低
系統(tǒng)的復(fù)雜性度提高
一致性問題

系統(tǒng)可用性降低

系統(tǒng)引入的外部依賴越多领追,穩(wěn)定性越差,一旦MQ掛機响逢,就會對業(yè)務(wù)造成影響绒窑,需要保證MQ的高可用

在這里插入圖片描述

系統(tǒng)的復(fù)雜性度提高

MQ的加入大大增加了系統(tǒng)的復(fù)雜度,以前系統(tǒng)之間是同步的遠程調(diào)用舔亭,現(xiàn)在是通過MQ的異步調(diào)用些膨,如何保證消息沒有重復(fù)消費?如何處理消息丟失的情況分歇?如何保證消息的一致性問題

一致性問題

A系統(tǒng)處理完業(yè)務(wù)傀蓉,通過MQ給B,C,D三個系統(tǒng)發(fā)消息數(shù)據(jù)职抡,如果B系統(tǒng)葬燎,C系統(tǒng)處理成功,D系統(tǒng)處理失敗。如何保證數(shù)據(jù)處理的一致性

什么時候使用MQ

1.生產(chǎn)者不需要從消費者處獲得反饋缚甩,引入消息隊列之前的調(diào)用谱净,其接口返回值因該為空,這才讓異步成為了可能

2.容許短暫性的不一致

3.確實是用了可以提升系統(tǒng)穩(wěn)定性等等擅威,即解耦壕探,提速,削峰這些方面帶來的收益郊丛,超過了MQ李请,管理MQ這些成本

常見的MQ產(chǎn)品

目前業(yè)界有很多MQ產(chǎn)品,例如RabbitMQ厉熟,RocketMQ, ActiveMQ, ZeroMQ, MetaMQ , 也有直接使用Redis充當(dāng)消息隊列的导盅,而這些消息隊列產(chǎn)品,在實際選型時揍瑟,需要結(jié)合自身需求與產(chǎn)品特征綜合考慮

在這里插入圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末白翻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绢片,更是在濱河造成了極大的恐慌滤馍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件底循,死亡現(xiàn)場離奇詭異巢株,居然都是意外死亡,警方通過查閱死者的電腦和手機此叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門纯续,熙熙樓的掌柜王于貴愁眉苦臉地迎上來随珠,“玉大人,你說我怎么就攤上這事猬错〈翱矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵倦炒,是天一觀的道長显沈。 經(jīng)常有香客問我,道長逢唤,這世上最難降的妖魔是什么拉讯? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鳖藕,結(jié)果婚禮上魔慷,老公的妹妹穿的比我還像新娘。我一直安慰自己著恩,他們只是感情好院尔,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喉誊,像睡著了一般邀摆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伍茄,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天栋盹,我揣著相機與錄音,去河邊找鬼敷矫。 笑死例获,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曹仗。 我是一名探鬼主播躏敢,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼整葡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讥脐,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤遭居,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旬渠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱萍,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年告丢,在試婚紗的時候發(fā)現(xiàn)自己被綠了枪蘑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岳颇,靈堂內(nèi)的尸體忽然破棺而出照捡,到底是詐尸還是另有隱情,我是刑警寧澤话侧,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布栗精,位于F島的核電站,受9級特大地震影響瞻鹏,放射性物質(zhì)發(fā)生泄漏悲立。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一新博、第九天 我趴在偏房一處隱蔽的房頂上張望薪夕。 院中可真熱鬧,春花似錦赫悄、人聲如沸原献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嚼贡。三九已至,卻和暖如春同诫,著一層夾襖步出監(jiān)牢的瞬間粤策,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工误窖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叮盘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓霹俺,卻偏偏與公主長得像柔吼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丙唧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容