国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

開發(fā) 架構(gòu)
這篇文章我們把消息中間件這塊高頻的面試題給大家說一下,也會(huì)涵蓋一些MQ中間件常見的技術(shù)問題。

引言

這篇文章開始,我們把消息中間件這塊高頻的面試題給大家說一下,也會(huì)涵蓋一些MQ中間件常見的技術(shù)問題。

假如面試官看你簡歷里寫了MQ中間件的使用經(jīng)驗(yàn),很可能會(huì)有如下問題:

  • 你們公司生產(chǎn)環(huán)境用的是什么消息中間件?
  • 為什么要在系統(tǒng)里引入消息中間件?
  • 引入消息中間件之后會(huì)有什么好處以及壞處?

好,我們一個(gè)個(gè)的來分析!

你們公司生產(chǎn)環(huán)境用的是什么消息中間件?

這個(gè)首先你可以說下你們公司選用的是什么消息中間件,比如用的是RabbitMQ,然后可以初步給一些你對不同MQ中間件技術(shù)的選型分析。

舉個(gè)例子:比如說ActiveMQ是老牌的消息中間件,國內(nèi)很多公司過去運(yùn)用的還是非常廣泛的,功能很強(qiáng)大。

但是問題在于沒法確認(rèn)ActiveMQ可以支撐互聯(lián)網(wǎng)公司的高并發(fā)、高負(fù)載以及高吞吐的復(fù)雜場景,在國內(nèi)互聯(lián)網(wǎng)公司落地較少。而且使用較多的是一些傳統(tǒng)企業(yè),用ActiveMQ做異步調(diào)用和系統(tǒng)解耦。

然后你可以說說RabbitMQ,他的好處在于可以支撐高并發(fā)、高吞吐、性能很高,同時(shí)有非常完善便捷的后臺管理界面可以使用。

另外,他還支持集群化、高可用部署架構(gòu)、消息高可靠支持,功能較為完善。

而且經(jīng)過調(diào)研,國內(nèi)各大互聯(lián)網(wǎng)公司落地大規(guī)模RabbitMQ集群支撐自身業(yè)務(wù)的case較多,國內(nèi)各種中小型互聯(lián)網(wǎng)公司使用RabbitMQ的實(shí)踐也比較多。

除此之外,RabbitMQ的開源社區(qū)很活躍,較高頻率的迭代版本,來修復(fù)發(fā)現(xiàn)的bug以及進(jìn)行各種優(yōu)化,因此綜合考慮過后,公司采取了RabbitMQ。

但是RabbitMQ也有一點(diǎn)缺陷,就是他自身是基于erlang語言開發(fā)的,所以導(dǎo)致較為難以分析里面的源碼,也較難進(jìn)行深層次的源碼定制和改造,畢竟需要較為扎實(shí)的erlang語言功底才可以。

然后可以聊聊RocketMQ,是阿里開源的,經(jīng)過阿里的生產(chǎn)環(huán)境的超高并發(fā)、高吞吐的考驗(yàn),性能卓越,同時(shí)還支持分布式事務(wù)等特殊場景。

而且RocketMQ是基于Java語言開發(fā)的,適合深入閱讀源碼,有需要可以站在源碼層面解決線上生產(chǎn)問題,包括源碼的二次開發(fā)和改造。

另外就是Kafka。Kafka提供的消息中間件的功能明顯較少一些,相對上述幾款MQ中間件要少很多。

但是Kafka的優(yōu)勢在于專為超高吞吐量的實(shí)時(shí)日志采集、實(shí)時(shí)數(shù)據(jù)同步、實(shí)時(shí)數(shù)據(jù)計(jì)算等場景來設(shè)計(jì)。

因此Kafka在大數(shù)據(jù)領(lǐng)域中配合實(shí)時(shí)計(jì)算技術(shù)(比如Spark Streaming、Storm、Flink)使用的較多。但是在傳統(tǒng)的MQ中間件使用場景中較少采用。

PS:如果大家對上述一些MQ技術(shù)還沒在自己電腦部署過,沒寫幾個(gè)helloworld體驗(yàn)一下的話,建議先上各個(gè)技術(shù)的官網(wǎng)找到helloworld demo,自己跑一遍玩玩。

為什么在你們系統(tǒng)架構(gòu)中要引入消息中間件?

回答這個(gè)問題,其實(shí)就是讓你先說說消息中間件的常見使用場景。

然后結(jié)合你們自身系統(tǒng)對應(yīng)的使用場景,說一下在你們系統(tǒng)中引入消息中間件是解決了什么問題。

1、系統(tǒng)解耦

假設(shè)你有個(gè)系統(tǒng)A,這個(gè)系統(tǒng)A會(huì)產(chǎn)出一個(gè)核心數(shù)據(jù),現(xiàn)在下游有系統(tǒng)B和系統(tǒng)C需要這個(gè)數(shù)據(jù)。

那簡單,系統(tǒng)A就是直接調(diào)用系統(tǒng)B和系統(tǒng)C的接口發(fā)送數(shù)據(jù)給他們就好了。

整個(gè)過程,如下圖所示。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

但是現(xiàn)在要是來了系統(tǒng)D、系統(tǒng)E、系統(tǒng)F、系統(tǒng)G,等等,十來個(gè)其他系統(tǒng)慢慢的都需要這份核心數(shù)據(jù)呢?如下圖所示。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

大家可別以為這是開玩笑,一個(gè)大規(guī)模系統(tǒng),往往會(huì)拆分為幾十個(gè)甚至上百個(gè)子系統(tǒng),每個(gè)子系統(tǒng)又對應(yīng)N多個(gè)服務(wù),這些系統(tǒng)與系統(tǒng)之間有著錯(cuò)綜復(fù)雜的關(guān)系網(wǎng)絡(luò)。

如果某個(gè)系統(tǒng)產(chǎn)出一份核心數(shù)據(jù),可能下游無數(shù)的其他系統(tǒng)都需要這份數(shù)據(jù)來實(shí)現(xiàn)各種業(yè)務(wù)邏輯。

此時(shí)如果你要是采取上面那種模式來設(shè)計(jì)系統(tǒng)架構(gòu),那么絕對你負(fù)責(zé)系統(tǒng)A的同學(xué)要被煩死了。

先是來一個(gè)人找他要求發(fā)送數(shù)據(jù)給一個(gè)新的系統(tǒng)H,系統(tǒng)A的同學(xué)要修改代碼然后在那個(gè)代碼里加入調(diào)用新系統(tǒng)H的流程。

一會(huì)那個(gè)系統(tǒng)B是個(gè)陳舊老系統(tǒng)要下線了,告訴系統(tǒng)A的同學(xué):別給我發(fā)送數(shù)據(jù)了,接著系統(tǒng)A再次修改代碼不再給這個(gè)系統(tǒng)B。

然后如果要是某個(gè)下游系統(tǒng)突然宕機(jī)了呢?系統(tǒng)A的調(diào)用代碼里是不是會(huì)拋異常?那系統(tǒng)A的同學(xué)會(huì)收到報(bào)警說異常了,結(jié)果他還要去care是下游哪個(gè)系統(tǒng)宕機(jī)了。

所以在實(shí)際的系統(tǒng)架構(gòu)設(shè)計(jì)中,如果全部采取這種系統(tǒng)耦合的方式,在某些場景下絕對是不合適的,系統(tǒng)耦合度太嚴(yán)重。

并且互相耦合起來并不是核心鏈路的調(diào)用,而是一些非核心的場景(比如上述的數(shù)據(jù)消費(fèi))導(dǎo)致了系統(tǒng)耦合,這樣會(huì)嚴(yán)重的影響上下游系統(tǒng)的開發(fā)和維護(hù)效率。

因此在上述系統(tǒng)架構(gòu)中,就可以采用MQ中間件來實(shí)現(xiàn)系統(tǒng)解耦。

系統(tǒng)A就把自己的一份核心數(shù)據(jù)發(fā)到MQ里,下游哪個(gè)系統(tǒng)感興趣自己去消費(fèi)即可,不需要了就取消數(shù)據(jù)的消費(fèi),如下圖所示。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

2、異步調(diào)用

假設(shè)你有一個(gè)系統(tǒng)調(diào)用鏈路,是系統(tǒng)A調(diào)用系統(tǒng)B,一般耗時(shí)20ms;系統(tǒng)B調(diào)用系統(tǒng)C,一般耗時(shí)200ms;系統(tǒng)C調(diào)用系統(tǒng)D,一般耗時(shí)2s,如下圖所示。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

現(xiàn)在最大的問題就是:用戶一個(gè)請求過來巨慢無比,因?yàn)樽咄暌粋€(gè)鏈路,需要耗費(fèi)20ms + 200ms + 2000ms(2s) = 2220ms,也就是2秒多的時(shí)間。

但是實(shí)際上,鏈路中的系統(tǒng)A調(diào)用系統(tǒng)B,系統(tǒng)B調(diào)用系統(tǒng)C,這兩個(gè)步驟起來也就220ms。

就因?yàn)橐肓讼到y(tǒng)C調(diào)用系統(tǒng)D這個(gè)步驟,導(dǎo)致最終鏈路執(zhí)行時(shí)間是2秒多,直接將鏈路調(diào)用性能降低了10倍,這就是導(dǎo)致鏈路執(zhí)行過慢的罪魁禍?zhǔn)住?/span>

那此時(shí)我們可以思考一下,是不是可以將系統(tǒng)D從鏈路中抽離出去做成異步調(diào)用呢?其實(shí)很多的業(yè)務(wù)場景是可以允許異步調(diào)用的。

舉個(gè)例子,你平時(shí)點(diǎn)個(gè)外賣,咔嚓一下子下訂單然后付款了,此時(shí)賬戶扣款、創(chuàng)建訂單、通知商家給你準(zhǔn)備菜品。

接著,是不是需要找個(gè)騎手給你送餐?那這個(gè)找騎手的過程,是需要一套復(fù)雜算法來實(shí)現(xiàn)調(diào)度的,比較耗時(shí)。

但是其實(shí)稍微晚個(gè)幾十秒完成騎手的調(diào)度都是ok的,因?yàn)閷?shí)際并不需要在你支付的一瞬間立馬給你找好騎手,也沒那個(gè)必要。

那么我們是不是就可以把找騎手給你送餐的這個(gè)步驟從鏈路中抽離出去,做成異步化的,哪怕延遲個(gè)幾十秒,但是只要在一定時(shí)間范圍內(nèi)給你找到一個(gè)騎手去送餐就可以了。

這樣是不是就可以讓你下訂單點(diǎn)外賣的速度變得超快?支付成功之后,直接創(chuàng)建好訂單、賬戶扣款、通知商家立馬給你準(zhǔn)備做菜就ok了,這個(gè)過程可能就幾百毫秒。

然后后臺異步化的耗費(fèi)可能幾十秒通過調(diào)度算法給你找到一個(gè)騎手去送餐,但是這個(gè)步驟不影響我們快速下訂單。

當(dāng)然我們不是說那些大家熟悉的外賣平臺的技術(shù)架構(gòu)就一定是這么實(shí)現(xiàn)的,只不過是用一個(gè)生活中常見的例子給大家舉例說明而已。

所以上面的鏈路也是同理,如果業(yè)務(wù)流程支持異步化的話,是不是就可以考慮把系統(tǒng)C對系統(tǒng)D的調(diào)用抽離出去做成異步化的,不要放在鏈路中同步依次調(diào)用。

這樣,實(shí)現(xiàn)思路就是系統(tǒng)A -> 系統(tǒng)B -> 系統(tǒng)C,直接就耗費(fèi)220ms后直接成功了。

然后系統(tǒng)C就是發(fā)送個(gè)消息到MQ中間件里,由系統(tǒng)D消費(fèi)到消息之后慢慢的異步來執(zhí)行這個(gè)耗時(shí)2s的業(yè)務(wù)處理。通過這種方式直接將核心鏈路的執(zhí)行性能提升了10倍。

整個(gè)過程,如下圖所示。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

3、流量削峰

假設(shè)你有一個(gè)系統(tǒng),平時(shí)正常的時(shí)候每秒可能就幾百個(gè)請求,系統(tǒng)部署在8核16G的機(jī)器的上,正常處理都是ok的,每秒幾百請求是可以輕松抗住的。

但是如下圖所示,在高峰期一下子來了每秒鐘幾千請求,瞬時(shí)出現(xiàn)了流量高峰,此時(shí)你的選擇是要搞10臺機(jī)器,抗住每秒幾千請求的瞬時(shí)高峰嗎?

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

那如果瞬時(shí)高峰每天就那么半個(gè)小時(shí),接著直接就降低為了每秒就幾百請求,如果你線上部署了很多臺機(jī)器,那么每臺機(jī)器就處理每秒幾十個(gè)請求就可以了,這不是有點(diǎn)浪費(fèi)機(jī)器資源嗎?

大部分時(shí)候,每秒幾百請求,一臺機(jī)器就足夠了,但是為了抗那每天瞬時(shí)的高峰,硬是部署了10臺機(jī)器,每天就那半個(gè)小時(shí)有用,別的時(shí)候都是浪費(fèi)資源的。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

但是如果你就部署一臺機(jī)器,那會(huì)導(dǎo)致瞬時(shí)高峰時(shí),一下子壓垮你的系統(tǒng),因?yàn)榻^對無法抗住每秒幾千的請求高峰。

此時(shí)我們就可以用MQ中間件來進(jìn)行流量削峰。所有機(jī)器前面部署一層MQ,平時(shí)每秒幾百請求大家都可以輕松接收消息。

一旦到了瞬時(shí)高峰期,一下涌入每秒幾千的請求,就可以積壓在MQ里面,然后那一臺機(jī)器慢慢的處理和消費(fèi)。

等高峰期過了,再消費(fèi)一段時(shí)間,MQ里積壓的數(shù)據(jù)就消費(fèi)完畢了。

為什么要使用MQ消息中間件?這幾個(gè)問題必須拿下

這個(gè)就是很典型的一個(gè)MQ的用法,用有限的機(jī)器資源承載高并發(fā)請求,如果業(yè)務(wù)場景允許異步削峰,高峰期積壓一些請求在MQ里,然后高峰期過了,后臺系統(tǒng)在一定時(shí)間內(nèi)消費(fèi)完畢不再積壓的話,那就很適合用這種技術(shù)方案。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-03-30 08:58:26

消息隊(duì)列RabbitMQ面試

2024-08-21 10:40:21

2023-06-29 10:10:06

Rocket MQ消息中間件

2023-10-24 07:50:18

消息中間件MQ

2019-01-29 11:02:30

消息中間件Java互聯(lián)網(wǎng)

2022-07-26 00:00:00

MQ消息中間件

2019-04-08 09:31:55

OracleMySQL遷移

2019-02-14 09:35:15

面試MQ中間件

2015-08-11 11:16:36

淘寶中間件

2022-11-02 10:08:46

分布式高并發(fā)消息中間件

2016-09-12 18:01:05

IBM

2021-12-14 10:39:12

中間件ActiveMQRabbitMQ

2022-05-10 09:24:44

中間件應(yīng)用方案

2022-08-09 08:31:29

RocketMQ消息中間件

2022-11-18 07:54:02

Go中間件項(xiàng)目

2018-02-01 10:19:22

中間件服務(wù)器系統(tǒng)

2023-05-08 08:09:26

路由元信息謂詞

2024-08-09 08:11:02

2022-12-12 17:00:50

消息中間件MQ中間件常

2020-07-03 08:53:35

消息中間件MQ
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美精品v国产精品v日韩精品| aⅴ在线免费观看| 亚洲欧美清纯在线制服| 91精品久久| 麻豆国产精品va在线观看不卡| 国产欧美一区二区精品仙草咪| 五月天亚洲一区| 可以在线观看的av网站| 一区二区三区欧美成人| 最近中文字幕mv在线一区二区三区四区 | 国产精品久久久久久久龚玥菲| 精品欧美国产| 日韩av网站大全| 国产视频一区在线观看| 久久国产影院| 黄网站免费在线播放| 中文字幕中文字幕在线中心一区| 欧美大尺度激情区在线播放 | 国产乱码精品1区2区3区| 亚洲精品影片| 韩日在线视频| 在线观看视频黄色| 欧美激情精品久久久久久免费印度| 精品成人av一区| 久久超碰97人人做人人爱| 91久久偷偷做嫩草影院电| 国产精品一级伦理| 在线碰免费视频在线观看| 亚洲一区精品视频| 欧美激情www| 高清欧美性猛交| 欧美二区乱c少妇| 色综合久久久久综合99| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 你懂的视频在线| 一级二级三级在线观看| 久草在线中文888| 中文精品一区二区三区| 久久久com| 国外成人在线播放| 美女精品视频一区| 欧美大奶子在线| 美女黄色丝袜一区| 久久视频在线免费观看| 色妞一区二区三区| 久久精品国产清自在天天线| 在线免费观看日韩欧美| 久久先锋影音av| 亚洲精品偷拍| 牛牛视频精品一区二区不卡| 快射视频在线观看| 三区四区电影在线观看| 538在线视频观看| 视频一区亚洲| 国产精品视频地址| 亚洲图片欧美午夜| 欧美在线观看一区| 国产精品视频麻豆| 国产呦萝稀缺另类资源| 综合一区av| www.亚洲一二| 五月激激激综合网色播| 精品视频国产| 日韩和的一区二在线| 九色蝌蚪在线| 自拍视频在线播放| av一级在线| 可以在线看黄的网站| 91老司机精品视频| 久久躁狠狠躁夜夜爽| 欧美国产日韩一区二区在线观看| 91国内揄拍国内精品对白| 亚洲美女视频网站| 欧美日韩卡一卡二| 亚洲日本在线视频观看| 国产乱码精品一区二区三区av| 国产v日产∨综合v精品视频| 国产一区二区三区久久| 精品久久电影| 亚洲欧美文学| 男人操女人的视频在线观看欧美| 91精品啪在线观看国产81旧版| 999精品视频在这里| 九九久久婷婷| 国产精品色婷婷在线观看| 污污视频在线看| 国产福利在线| aa国产成人| 国产视频网站在线| 男人添女人下部高潮视频在线观看 | 日韩av在线一区二区三区| 欧洲午夜精品久久久| 中文字幕日韩精品在线观看| 日韩欧美国产系列| 色婷婷激情一区二区三区| 国产欧美精品一区二区色综合| 亚洲免费成人av| 91偷拍与自偷拍精品| 精品一区二区三区久久久| 不卡av电影在线播放| 国产综合久久久久久久久久久久| www.一区二区| 国产成人免费视频网站| 国产日产欧产精品推荐色 | 成人免费淫片在线费观看| 国产av天堂无码一区二区三区| 色爱区成人综合网| 国产精品国产亚洲精品看不卡| 免费福利片在线观看| 国产97色在线 | 日韩| 婷婷五月综合缴情在线视频| 中文字幕一区综合| 男操女免费网站| 黄色片久久久久| 性感av在线播放| 在线看国产视频| 高清精品在线| 久久久男人天堂| 1769在线观看| 久久成人av少妇免费| 亚洲大片精品免费| 成人在线视频中文字幕| 久久影视精品| 国产亚洲人成a在线v网站| 日韩欧美字幕| 一区二区三区网站| 伊人情人综合网| 国产福利一区在线| 午夜精品爽啪视频| 日韩欧美国产骚| 一本一道综合狠狠老| 亚洲色图五月天| 色七七影院综合| av成人在线电影| 久久综合入口| 亚洲精品国产精品国自产观看| 色一情一乱一伦一区二区三欧美| 向日葵污视频在线观看| 91原色影院| 青草在线视频| 亚洲三级网址| 国产在线看一区| 欧美性猛交xxxx富婆| 麻豆成人在线看| 日产精品高清视频免费| 日本性视频网| 欧美美女色图| 久久中文字幕一区二区| 亚洲一区二区三区在线免费| 亚洲激情综合| 亚洲欧美怡红院| 精品久久久一区| 中文字幕亚洲一区在线观看| 91精品黄色| 亚洲欧美日韩精品综合在线观看| 快色在线观看| 国产精品四虎| 青青操综合网| 国产xxx精品视频大全| 欧美日韩国产高清一区二区 | 久久av网址| 国产成a人亚洲| 欧美日韩美女一区二区| 日韩av电影免费观看高清| 91中文字幕在线观看| 国产精品日韩一区二区免费视频| 欧美二区三区| 2222www色视频在线观看| av色图一区| 免费一区二区| 26uuu色噜噜精品一区| 精品乱人伦一区二区三区| 国产亚洲一区二区在线| 精品一区二区三区视频日产| 男人免费av| 黄网站app在线观看下载视频大全官网 | 欧美日韩三区| 激情综合亚洲| 国内精品视频666| 国产欧美中文在线| 亚洲色图日韩av| 欧美在线一二三区| 国产97在线 | 亚洲| 91网在线观看| 国产成人免费av一区二区午夜| 久久国产精品免费| 666欧美在线视频| 欧美www在线| 无颜之月在线看| 国产丝袜在线观看视频| 在线观看亚洲精品福利片| 日韩理论在线| 国产精品国产成人国产三级| 欧美日韩国产高清一区| 成人网在线视频| 91免费视频黄| a视频v在线| 免费萌白酱国产一区二区三区| 久久精品一区二区| 欧美日韩一区视频|