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

究竟什么時候該使用MQ?

開發 開發工具 前端
MQ,互聯網技術體系中一個常見組件,究竟什么時候不使用MQ,究竟什么時候使用MQ,MQ究竟適合什么場景,是今天要分享的內容。

任何脫離業務的組件引入都是耍流氓。引入一個組件,最先該解答的問題是,此組件解決什么問題。

MQ,互聯網技術體系中一個常見組件,究竟什么時候不使用MQ,究竟什么時候使用MQ,MQ究竟適合什么場景,是今天要分享的內容。

[[311801]]

MQ是什么?

消息總線(Message Queue),后文稱MQ,是一種跨進程的通信機制,用于上下游傳遞消息。

畫外音:這兩個進程,一般不在同一臺服務器上。

在互聯網架構中,MQ經常用做“上下游解耦”:

  • 消息發送方只依賴MQ,不關注消費方是誰;
  • 消息消費方也只依賴MQ,不關注發送方是誰;

畫外音:發送方與消費方,邏輯上和物理上都不依賴彼此。

什么時候不使用MQ?

當調用方需要關心消息執行結果時,通常不使用MQ,而使用RPC調用。

  1. ret = PassportService::userAuth(name, pass); 
  2. switch(ret){ 
  3.     case(YES) : return YesHTML(); 
  4.     case(NO) : return NoHTML(); 
  5.     case(JUMP) : return 304HTML(): 
  6.     default : return 500HTML(); 

如上例所示,上游調用Passport服務,處理結果不同,業務會走不同的邏輯處理分支(登錄成功,登錄失敗,執行錯誤等),即“處理結果強依賴”,此時應該使用RPC調用。

畫外音:絕大部分情況,應該使用RPC。

此時如果強行使用MQ呢?

如果強行使用MQ通訊,調用方不能直接告之用戶登錄成功又或失敗,則要等待另一個MQ通知回調。這么玩,不但使得編碼復雜,還會引入消息丟失的風險,中間多加入一層,多此一舉。

究竟什么時候使用MQ呢?

下面四類典型場景,應該使用MQ。

典型場景一:數據驅動的任務依賴

(1) 什么是任務依賴?

舉個栗子,互聯網公司經常在凌晨進行一些數據統計任務,這些任務之間有一定的依賴關系,例如:

  • task3需要使用task2的輸出作為輸入;
  • task2需要使用task1的輸出作為輸入;

這樣的話,tast1, task2, task3之間就有任務依賴關系,必須task1先執行,再task2執行,載task3執行。

(2) 對于這類需求,通常怎么實現呢?

常見的玩法是,crontab人工排執行時間表。

如上圖,手動設定如下:

  • task1,0:00執行,經驗執行時間為50分鐘;
  • task2,1:00執行(為task1預留10分鐘buffer),經驗執行時間也是50分鐘;
  • task3,2:00執行(為task2預留10分鐘buffer);

crontab手動排表有什么壞處呢?

  • 如果有一個任務執行時間超過了預留buffer的時間,將會得到錯誤的結果,因為后置任務不清楚前置任務是否執行成功,此時要手動重跑任務,還有可能要調整排班表;
  • 總任務的執行時間很長,總是要預留很多buffer,如果前置任務提前完成,后置任務不會提前開始;
  • 如果一個任務被多個任務依賴,這個任務將會稱為關鍵路徑,排班表很難體現依賴關系,容易出錯;
  • 如果有一個任務的執行時間要調整,將會有多個任務的執行時間要調整;

無論如何,采用“crontab排班表”的方法,各任務嚴重耦合,誰用過誰痛誰知道。

畫外音:用過的,痛過的,請留言。

(3) 應該如何優化呢?

采用MQ解耦。

如上圖,任務之間通過MQ來傳遞“開始”與“結束”的通知:

  • task1準時開始,結束后發一個“task1 done”的消息;
  • task2訂閱“task1 done”的消息,收到消息后第一時間啟動執行,結束后發一個“task2 done”的消息;
  • task3同理;

(4) 采用MQ有什么好處呢?

  • 不需要預留buffer,上游任務執行完,下游任務總會在第一時間被執行;
  • 依賴多個任務,被多個任務依賴都很好處理,只需要訂閱相關消息即可;
  • 有任務執行時間變化,下游任務都不需要調整執行時間;

需要特別說明的是,MQ只用來傳遞上游任務執行完成的消息,并不用于傳遞真正的輸入輸出數據。

典型場景二:上游不關心執行結果 

上游需要關注執行結果時要用“RPC調用”,上游不關注執行結果時,使用MQ。

舉個栗子,58同城的很多下游需要關注“用戶發布帖子”這個事件,比如:

  • 招聘用戶發布帖子后,招聘業務要獎勵58豆;
  • 房產用戶發布帖子后,房產業務要送2個置頂;
  • 二手用戶發布帖子后,二手業務要修改用戶統計數據;

(1) 對于這類需求,可以采用什么方式實現呢?

比較無腦的,可以使用RPC調用來實現:帖子發布服務執行完成之后,調用下游招聘業務、房產業務、二手業務,來完成消息的通知。

但事實上,這個通知是否正常正確的執行,帖子發布服務根本不關注。

(2) 通過RPC來傳遞不需要知道處理結果的通知,有什么壞處呢?

  • 帖子發布流程的執行時間增加了;
  • 下游服務當機,可能導致帖子發布服務受影響,上下游邏輯+物理依賴嚴重;
  • 每當增加一個需要知道“帖子發布成功”信息的下游,修改代碼的是帖子發布服務;

畫外音:這一點是最惡心的,屬于架構設計中典型的反向依賴。

(3) 如何來進行優化呢?

采用MQ解耦,代替RPC。

如上圖所示:

  • 帖子發布成功后,向MQ發一個消息;
  • 哪個下游關注“帖子發布成功”的消息,主動去MQ訂閱;

(4) 如此一來,有什么好處呢?

  • 上游執行時間短;
  • 上下游邏輯+物理解耦,除了與MQ有物理連接,模塊之間都不相互依賴;
  • 新增一個下游消息關注方,上游不需要修改任何代碼。

典型場景三:上游關注執行結果,但執行時間很長

有時候上游需要關注執行結果,但執行結果時間很長(典型的是調用離線處理,或者跨公網調用),也經常使用回調網關+MQ來解耦。

舉個栗子,微信支付,跨公網調用微信的接口,執行時間會比較長,但調用方又非常關注執行結果,此時一般怎么玩呢?

一般采用“回調網關+MQ”方案來解耦:

  • 調用方直接跨公網調用微信接口;
  • 微信返回調用成功,此時并不代表返回成功;
  • 微信執行完成后,回調統一網關;
  • 網關將返回結果通知MQ;
  • 請求方收到結果通知;

這里需要注意的是,不應該由回調網關來RPC通知上游來通知結果,如果是這樣的話,每次新增調用方,回調網關都需要修改代碼,仍然會反向依賴,使用回調網關+MQ的方案,新增任何對微信支付的調用,都不需要修改代碼。

結尾總結

MQ是一個互聯網架構中常見的解耦利器。

什么時候不使用MQ?

上游實時關注執行結果,通常采用RPC。

什么時候使用MQ?

  • 數據驅動的任務依賴;
  • 上游不關心多下游執行結果;
  • 異步返回執行時間長;

知其然,知其所以然,希望大家有收獲。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-04-05 21:43:08

MQ互聯網架構

2025-02-28 09:04:08

2025-05-15 08:50:00

MQRPC架構

2014-09-23 10:16:03

程序員

2017-06-28 15:06:51

PythonLambda函數

2022-05-19 10:27:34

機器學習人工智能

2013-04-25 10:28:38

大數據云服務

2014-09-17 10:57:22

802.11acWLAN

2012-07-26 10:27:31

PHP

2017-05-15 09:55:07

2020-05-12 11:25:50

MySQLES數據庫

2015-07-08 15:55:01

NSStringcopystrong

2013-09-29 17:13:59

PowerShell工作流

2013-11-28 16:03:24

2012-09-24 10:20:39

JavaScriptJS

2010-11-09 13:58:03

SQL Server鎖

2009-06-19 16:29:47

EJBXML

2020-07-24 09:20:44

MapObject前端

2025-05-23 18:47:33

ThinklessAI系統

2024-08-05 01:22:16

點贊
收藏

51CTO技術棧公眾號

国产精品伦一区| 中文字幕亚洲一区二区va在线| 亚洲美女福利视频网站| 久久久亚洲精品无码| 欧美日韩一视频区二区| 久久久精品在线观看| 免费网站免费进入在线| 91麻豆高清视频| 日本午夜精品一区二区| 老司机在线精品视频| 亚洲精品资源在线| 一级日本在线| 亚洲精品视频一区二区| 日韩亚洲欧美视频| 米奇777在线欧美播放| 国产精品极品美女在线观看免费 | 伊人久久久大香线蕉综合直播| 久久精品国产亚洲一区二区| gogo在线高清视频| 亚洲成av人片观看| 亚洲欧美在线精品| 91视频免费播放| 大地资源第二页在线观看高清版| 欧美jizzhd精品欧美巨大免费| 久久久久女教师免费一区| www.日韩| 亚洲精品国产精品乱码不99按摩 | www午夜视频| 成人亚洲一区二区一| 亚洲精品日韩精品| 99热在线精品观看| 成人久久久久久| 久草成人在线| 青青久久av北条麻妃海外网| 成人福利免费在线观看| 久久精品小视频| 国产亚洲欧美日韩精品一区二区三区 | 性欧美暴力猛交69hd| 99久久久国产精品免费调教网站 | 久久国产精品一区二区三区四区| 麻豆精品在线看| 久久精品资源| 精品一区二区三区四区| 国产精品xx| 亚洲精选中文字幕| 免费成人美女女| 中文字幕日韩在线观看| 日日夜夜亚洲精品| 永久免费看mv网站入口亚洲| 电影一区电影二区| 中日韩午夜理伦电影免费| 亚洲狼人综合| 91干在线观看| 99re66热这里只有精品8| 亚洲a一级视频| 亚洲三级色网| 日本精品一区二区三区视频| 免费的成人av| 97视频久久久| 国产精品久久毛片| 中文在线二区| 欧美一区二区三区在线观看视频| 七七成人影院| 尤物九九久久国产精品的分类| 色吧亚洲日本| 久久久99久久精品女同性| 日韩精品免费观看视频| 久久成年人免费电影| 三级欧美日韩| 亚洲午夜国产成人av电影男同| av在线收看| 久久国产精品第一页| 亚洲精品大尺度| 写真福利精品福利在线观看| 欧美sm美女调教| av在线免费网站| 成人教育av在线| 国产在线精品播放| 狠狠做深爱婷婷综合一区| 最新av在线网站| 一区二区三区小说| 久久久久久久影视| 亚洲国产欧美精品| 日本免费一区二区三区视频| 国产精品夫妻激情| 亚洲综合好骚| 日本一道本久久| 精品久久久久久久中文字幕| 成人福利在线观看视频| 欧美久久精品一级黑人c片 | 亚洲视频 欧洲视频| 国产资源在线播放| 一本色道久久88综合日韩精品| 国产精品日本一区二区三区在线| 国产伦精品一区二区三区精品视频| 国产在线欧美| 国产精品入口芒果| 欧美视频免费在线| 伊人久久综合一区二区| 日韩av观看网址| 日本sm残虐另类| 91p在线观看| 亚洲国产小视频| 欧美日韩在线播放视频| 日韩黄色短视频| 日韩欧美a级成人黄色| 一二区成人影院电影网| 91青青草免费观看| 成人午夜又粗又硬又大| 韩国中文免费在线视频| 色阁综合伊人av| 亚洲精品小说| www.浪潮av.com| 欧美一区2区视频在线观看| 高潮久久久久久久久久久久久久 | 久久久之久亚州精品露出| 狠狠色狠狠色综合日日tαg| 国产a级一级片| 91精品国产综合久久福利软件| 久久九九精品视频| 欧美三日本三级少妇三99| 国产精品国产a| 黄色在线网站噜噜噜| 成人免费网站在线观看| 91亚洲大成网污www| fc2ppv国产精品久久| 国产精品亚洲第一区| 91看片淫黄大片一级在线观看| h片在线播放| 91美女片黄在线观看游戏| 国产日韩欧美精品一区| 激情aⅴ欧美一区二区欲海潮| 国产精品欧美日韩一区二区| 成人av免费网站| 青青青国内视频在线观看软件| 国产精品第1页| 91麻豆免费观看| 国产一二三在线| 久久精品99久久| 欧美午夜www高清视频| 国产精品18hdxxxⅹ在线| 日韩中文字幕在线不卡| 日韩一区二区在线观看| 欧美久久久久| 中文产幕区在线观看| 欧美一级大片视频| 久久久www免费人成精品| 白浆在线视频| 久久艳妇乳肉豪妇荡乳av| 日韩欧美在线视频免费观看| 九九久久成人| 国产精品人人爽人人爽| www.国产精品一二区| a级高清视频欧美日韩| 国产主播一区二区三区| 免费黄色网址在线观看| 91精品国产综合久久久久久蜜臀 | 中文字幕久久午夜不卡| 一本色道久久综合亚洲精品不卡| 人人干在线视频| 91亚色免费| 福利视频导航一区| 欧美精品导航| 国产日韩精品视频一区| 激情视频免费观看在线| 欧美精品免费看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 嫩草成人www欧美| bbbbbbbbbbb在线视频| 7777精品久久久大香线蕉小说| 精品一区免费av| 国产三级在线播放| 亚洲精品一区二区三区樱花| 国产精品高精视频免费| 欧美成人激情在线| 日韩国产一区二| 羞羞视频在线观看免费| 欧美精品久久| 亚洲成人av在线| 国产一区二区三区精品欧美日韩一区二区三区| 羞羞视频在线观看不卡| 色噜噜狠狠一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 黄色精品一二区| 欧美综合影院| av日韩在线免费| 91久久爱成人| 日韩欧美中文字幕一区| 国产在线乱码一区二区三区| 国产精品第一| 黄色成人羞羞视频| 国产伊人精品在线| 91精品欧美一区二区三区综合在 | 国产精品麻豆| 精品视频免费在线播放| 久久青草精品视频免费观看| 五月天亚洲精品| 日本最新不卡在线| 欧洲亚洲精品久久久久| av成人动漫|