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

面試 | 為什么一定要用消息中間件?

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

[[256631]]

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

假如面試官看你簡歷里寫了MQ中間件的使用經驗,很可能會有如下問題:

1、你們公司生產環境用的是什么消息中間件?

2、為什么要在系統里引入消息中間件?

3、引入消息中間件之后會有什么好處以及壞處?

好,我們一個個的來分析!

一、你們用的是什么消息中間件?

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

舉個例子:比如說ActiveMQ是老牌的消息中間件,國內很多公司過去運用的還是非常廣泛的,功能很強大。

但是問題在于沒法確認ActiveMQ可以支撐互聯網公司的高并發、高負載以及高吞吐的復雜場景,在國內互聯網公司落地較少。而且使用較多的是一些傳統企業,用ActiveMQ做異步調用和系統解耦。

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

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

而且經過調研,國內各大互聯網公司落地大規模RabbitMQ集群支撐自身業務的case較多,國內各種中小型互聯網公司使用RabbitMQ的實踐也比較多。

除此之外,RabbitMQ的開源社區很活躍,較高頻率的迭代版本,來修復發現的bug以及進行各種優化,因此綜合考慮過后,公司采取了RabbitMQ。

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

然后可以聊聊RocketMQ,是阿里開源的,經過阿里的生產環境的超高并發、高吞吐的考驗,性能卓越,同時還支持分布式事務等特殊場景。

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

另外就是Kafka:

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

但是Kafka的優勢在于專為超高吞吐量的實時日志采集、實時數據同步、實時數據計算等場景來設計。

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

PS:如果大家對上述一些MQ技術還沒在自己電腦部署過,沒寫幾個helloworld體驗一下的話,建議先上各個技術的官網找到helloworld demo,自己跑一遍玩玩。

二、為什么要使用消息中間件?

回答這個問題,其實就是讓你先說說消息中間件的常見使用場景,然后結合你們自身系統對應的使用場景,說一下在你們系統中引入消息中間件是解決了什么問題。

1)系統解耦

假設你有個系統A,這個系統A會產出一個核心數據,現在下游有系統B和系統C需要這個數據。

那簡單,系統A就是直接調用系統B和系統C的接口發送數據給他們就好了。

整個過程,如下圖所示:

但是現在要是來了系統D、系統E、系統F、系統G,等等,十來個其他系統慢慢的都需要這份核心數據呢?如下圖所示:

大家可別以為這是開玩笑,一個大規模系統,往往會拆分為幾十個甚至上百個子系統,每個子系統又對應N多個服務,這些系統與系統之間有著錯綜復雜的關系網絡。

如果某個系統產出一份核心數據,可能下游無數的其他系統都需要這份數據來實現各種業務邏輯。

此時如果你要是采取上面那種模式來設計系統架構,那么絕對你負責系統A的同學要被煩死了。

先是來一個人找他要求發送數據給一個新的系統H,系統A的同學要修改代碼然后在那個代碼里加入調用新系統H的流程。

一會那個系統B是個陳舊老系統要下線了,告訴系統A的同學:別給我發送數據了,接著系統A再次修改代碼不再給這個系統B。

然后如果要是某個下游系統突然宕機了呢?

系統A的調用代碼里是不是會拋異常?那系統A的同學會收到報警說異常了,結果他還要去care是下游哪個系統宕機了。

所以在實際的系統架構設計中,如果全部采取這種系統耦合的方式,在某些場景下絕對是不合適的,系統耦合度太嚴重。

并且互相耦合起來并不是核心鏈路的調用,而是一些非核心的場景(比如上述的數據消費)導致了系統耦合,這樣會嚴重的影響上下游系統的開發和維護效率。

因此在上述系統架構中,就可以采用MQ中間件來實現系統解耦。

系統A就把自己的一份核心數據發到MQ里,下游哪個系統感興趣自己去消費即可,不需要了就取消數據的消費,如下圖所示:

2)異步調用

假設你有一個系統調用鏈路,是系統A調用系統B,一般耗時20ms;系統B調用系統C,一般耗時200ms;系統C調用系統D,一般耗時2s,如下圖所示:

現在***的問題就是:

用戶一個請求過來巨慢無比,因為走完一個鏈路,需要耗費:

20ms + 200ms + 2000ms(2s) = 2220ms,

也就是2秒多的時間。但是實際上,鏈路中的系統A調用系統B,系統B調用系統C,這兩個步驟起來也就220ms。

就因為引入了系統C調用系統D這個步驟,導致最終鏈路執行時間是2秒多,直接將鏈路調用性能降低了10倍,這就是導致鏈路執行過慢的罪魁禍首。

那此時我們可以思考一下,是不是可以將系統D從鏈路中抽離出去做成異步調用呢?

其實很多的業務場景是可以允許異步調用的。

舉個例子:你平時點個外賣,咔嚓一下子下訂單然后付款了,此時賬戶扣款、創建訂單、通知商家給你準備菜品。

接著,是不是需要找個騎手給你送餐?那這個找騎手的過程,是需要一套復雜算法來實現調度的,比較耗時。

但是其實稍微晚個幾十秒完成騎手的調度都是ok的,因為實際并不需要在你支付的一瞬間立馬給你找好騎手,也沒那個必要。

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

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

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

當然我們不是說那些大家熟悉的外賣平臺的技術架構就一定是這么實現的,只不過是用一個生活中常見的例子給大家舉例說明而已。

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

這樣,實現思路就是系統A -> 系統B -> 系統C,直接就耗費220ms后直接成功了。

然后系統C就是發送個消息到MQ中間件里,由系統D消費到消息之后慢慢的異步來執行這個耗時2s的業務處理。通過這種方式直接將核心鏈路的執行性能提升了10倍。

整個過程,如下圖所示:

3)流量削峰

假設你有一個系統,平時正常的時候每秒可能就幾百個請求,系統部署在8核16G的機器的上,正常處理都是ok的,每秒幾百請求是可以輕松抗住的

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

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

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

但是如果你就部署一臺機器,那會導致瞬時高峰時,一下子壓垮你的系統,因為絕對無法抗住每秒幾千的請求高峰。

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

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

等高峰期過了,再消費一段時間,MQ里積壓的數據就消費完畢了。

這個就是很典型的一個MQ的用法,用有限的機器資源承載高并發請求,如果業務場景允許異步削峰,高峰期積壓一些請求在MQ里,然后高峰期過了,后臺系統在一定時間內消費完畢不再積壓的話,那就很適合用這種技術方案。

責任編輯:龐桂玉 來源: Java后端技術
相關推薦

2019-02-14 09:35:15

面試MQ中間件

2022-03-21 07:40:08

線程池Executors方式

2018-08-24 09:02:26

2022-12-12 17:00:50

消息中間件MQ中間件常

2023-06-29 10:10:06

Rocket MQ消息中間件

2023-10-24 07:50:18

消息中間件MQ

2022-05-26 09:24:09

volatile懶漢模式

2021-12-14 10:39:12

中間件ActiveMQRabbitMQ

2015-08-11 11:16:36

淘寶中間件

2022-11-02 10:08:46

分布式高并發消息中間件

2021-03-05 11:02:14

iOS 14.5蘋果更新

2020-12-23 13:29:15

微服務架構面試官

2019-09-19 15:12:27

Spring策略框架

2019-12-13 10:32:56

開源消息中間件

2022-07-25 06:46:24

MQ中間件消息中間件

2023-05-08 08:09:26

路由元信息謂詞

2024-08-09 08:11:02

2022-08-09 08:31:29

RocketMQ消息中間件

2018-02-01 10:19:22

中間件服務器系統

2021-12-03 06:59:23

HashCodeEquals面試
點贊
收藏

51CTO技術棧公眾號

日韩一区二区三区电影| 国产精品裸体瑜伽视频| 国产日本亚洲| 日韩精品视频在线免费观看| 欧美xxxx免费虐| 精品日产卡一卡二卡麻豆| 大地资源网3页在线观看| 欧美一二三四在线| 久久香蕉av| 亚洲女人天堂视频| 成人在线黄色| 欧美激情第6页| 影视先锋久久| 99精品在线直播| 久久久久久久高潮| 三年中国中文在线观看免费播放| 国产一区二区在线免费观看| 欧美黑人在线观看| 久久新电视剧免费观看| 国产精品久久久毛片| 一区二区三区四区五区视频在线观看| 四虎永久在线| 欧美日韩精品是欧美日韩精品| 美女精品视频| 理论片在线不卡免费观看| www.亚洲一二| 日韩欧美999| 日韩av成人高清| 日韩色妇久久av| 国产伦精品一区二区三区免费| 国产在线拍揄自揄拍无码| 久久国产精品色婷婷| 99久热re在线精彩视频| 日韩精选在线| 国产一区二区欧美日韩| 成人黄动漫网站| 国产久卡久卡久卡久卡视频精品| 99re在线播放| 亚洲丝袜美腿综合| 农民人伦一区二区三区| 国产午夜亚洲精品羞羞网站| 久久白虎精品| 国产xxxxx在线观看| 亚洲国产导航| 伊人再见免费在线观看高清版| 久久久三级国产网站| 黄色三级在线观看| 欧美精品日韩一区| 欧美aaa大片视频一二区| 7m精品福利视频导航| 欧美日本三区| 国产婷婷一区二区三区| 亚洲影院免费观看| 国产三线在线| 日韩免费不卡av| 日韩av中文字幕一区二区三区| 久久综合色视频| 欧美午夜精品久久久久久久| 亚洲成人激情社区| 国产精品影片在线观看| 国产精品一级二级三级| 最全影音av资源中文字幕在线| 亚洲国产成人91精品| 亚洲人成亚洲精品| 四虎永久免费网站| 精品久久久久久亚洲精品| 亚洲黄色免费看| 成人精品视频99在线观看免费| 蜜桃精品视频在线| 牛牛精品在线视频| 久久99视频免费| 伊人色综合一区二区三区影院视频| 国内外成人免费视频| 婷婷亚洲五月| 国产a级黄色大片| 狠狠综合久久av一区二区小说| 中文在线资源| 国产欧美日韩精品专区| 国产乱子轮精品视频| 国产一级片在线| 久久久女人电视剧免费播放下载| 日韩成人免费电影| 青青草视频在线观看| 欧美人成在线视频| 极品少妇xxxx精品少妇偷拍| 精品999视频| 日韩免费黄色av| 成人免费黄色大片| 亚洲综合影视| www国产亚洲精品| 亚洲天堂网中文字| 粉嫩91精品久久久久久久99蜜桃| 国产精品久久国产精品| 亚洲天堂网中文字| 深夜日韩欧美| 亚洲av综合色区| 日韩免费在线观看| 中文视频一区| 亚州黄色一级| 久久久久国产精品免费| 国产成人免费视频网站| 日本大片在线播放| 国产精品一区免费观看| 亚洲成人av一区二区| 久久九九热re6这里有精品| 日本欧美黄色片| 亚洲免费影视第一页| 日韩精品乱码免费| a级影片在线| 免费国产一区二区| 欧美亚洲动漫精品| 亚洲网色网站| 在线免费观看色| 国产成人精品一区| 亚洲蜜臀av乱码久久精品| 第四色中文综合网| 久久精品影视大全| 欧美国产日本在线| 国产日韩一级二级三级| 亚洲三级电影| 免费高清在线观看免费| 日韩在线视频网| 99久久99久久精品国产片果冻| a屁视频一区二区三区四区| av影院在线播放| 亚洲一区二区国产| 国产99久久久国产精品潘金网站| 成人爱爱网址| 日韩日韩日韩日韩日韩| 少妇久久久久久| 久久精品视频在线免费观看| 国产精品一区三区在线观看| 欧美黄色一级片视频| 九九热精品视频国产| 国产欧美精品一区二区色综合| 最新国产一区二区| 成人在色线视频在线观看免费大全 | 综合久久99| 国产裸舞福利在线视频合集| 亚洲aⅴ男人的天堂在线观看| 欧美日韩中国免费专区在线看| 亚洲精品午夜av福利久久蜜桃| 国产最新视频在线观看| 久久久久久久有限公司| 精品粉嫩aⅴ一区二区三区四区| 久久99国产精品麻豆| 岛国精品在线| 97视频免费| 成人黄动漫网站免费| 欧美日产在线观看| 日本亚洲一区二区| 日韩黄色三级在线观看| 在线观看免费播放网址成人| 91欧美激情另类亚洲| 日韩一区二区免费高清| 成人免费视频一区二区| 欧洲vs亚洲vs国产| seseavlu视频在线| www婷婷av久久久影片| 98视频在线噜噜噜国产| 欧洲人成人精品| 韩国av一区二区三区在线观看| 91国内精品白嫩初高生| 日韩av免费观影| 中文字幕欧美人与畜| 色综合五月天导航| 精品久久久久久久久久久久久久| 老鸭窝毛片一区二区三区| 另类一区二区| 360天大佬第二季在线观看| 日韩女优制服丝袜电影| 精品日产卡一卡二卡麻豆| 欧美在线不卡视频| 日本一区二区三级电影在线观看 | 亚洲成人久久一区| 91麻豆福利精品推荐| 欧美另类69xxxxx| 国产在线观看91| av7777777| 91在线短视频| 久久精品国产欧美激情| 亚洲国产精品嫩草影院| 另类的小说在线视频另类成人小视频在线| 久久av偷拍| 搞黄网站在线观看| 亚洲精品乱码久久久久久自慰| 国产成人精品自拍| 欧美日产国产成人免费图片| 欧美欧美午夜aⅴ在线观看| 国产香蕉久久精品综合网| 亚洲欧美日韩视频二区| 电影一区二区在线观看| 不卡av免费观看| 色黄视频在线| 国产一区二区网| 久久久福利视频| 国产精品r级在线| 在线免费观看羞羞视频一区二区| 在线观看亚洲专区| 亚洲国产精品t66y|