成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一句話說清:什么時候用 RPC,什么時候用 MQ

開發 架構
MQ 是一個非常常見的物理上解耦、邏輯上也是解耦的利器:關注下游執行執行結果,用RPC;不關注下游執行結果,用MQ,不用RPC。

很多人說,MQ是架構解耦利器,能用MQ就不要用RPC,這個觀點對嗎?

什么時候用RPC?

當調用方需要關心執行結果,通常使用RPC調用。

登錄頁面調用passport服務,會根據passport服務的返回結果,區別執行登錄成功,登錄失敗,執行錯誤。

ret = PassportService::userAuth(name, pass);
switch(ret){
 case(YES) : return YesHTML();
 case(NO) : return NoHTML();
 case(JUMP) : return 304HTML():
 default : return 500HTML();
}

調用方關注執行結果時,使用RPC。

如果強行使用MQ進行上下游解耦呢?

使用MQ通訊,調用方不能直接告之用戶登錄成功又或失敗,阻塞住等待MQ通知回調不但使得編碼復雜,還會引入消息丟失的風險,中間多加入一層,多此一舉,基本沒有人這么玩。

那能否一律使用RPC調用呢?

不能。如果調用方不關心執行結果,卻仍然使用RPC調用,會引發上下游極大的耦合與瓶頸。

場景還原

有一個通用的上游服務,例如“帖子發布”服務,負責公司通用的帖子發布業務。有一些個性化的業務關心“用戶發布帖子”這個事件,例如:

  • 用戶發布帖子后,大數據部門要更新用戶的畫像;
  • 用戶發布帖子后,信息質量部門要異步檢查帖子是否合規;
  • 招聘業務最近在做用戶促活,如果用戶發布的是招聘帖子,要增加積分;

個性化下游關注這個事件,但下游對事件的執行結果,“帖子發布”服務卻并不關心,如果“帖子發布”服務通過RPC的方式去通知下游,就會有很大的問題。

耦合為何存在?

帖子發布服務,這本來應該是一個非常基礎的服務,上游upper通過RPC調用將事件同步給事件關注業務方biz1/biz2/biz3:

  • 一旦有新的業務需求要關注這個事件,修改代碼的是通用上游upper,此時通用服務的owner就在心里罵娘了“為何有需求的是你,修改代碼的卻是我”;
  • 一旦業務側出問題,會影響上游通用基礎服務,此時通用服務的owner又在心里罵娘了“我ca,穩定性的KPI,全被兄弟部門毀了”;
  • 一旦業務側接口升級,上游基礎服務需要配合升級,此時通用服務的owner可能又會抱怨“為何被動升級的人總是我”;

架構不合理,簡直痛不欲生。

如何解耦呢?

如果事件發出方不關心訂閱方的執行結果,不能用RPC,應該用MQ。

MQ能夠做到上下游物理上和邏輯上都解耦:

  • 物理上解耦,增加MQ之后,上游互不知道彼此的存在,不會建立物理連接了,大家都只與MQ建立物理連接;
  • 邏輯上解耦,事件發布方甚至不用知道哪些下游訂閱了這個消息,新增消息的訂閱方只需要連接MQ就行了,不需要上游關注;

稍作總結

MQ是一個非常常見的物理上解耦、邏輯上也是解耦的利器:

  • 關注下游執行執行結果,用RPC;
  • 不關注下游執行結果,用MQ,不用RPC;

這只是一個很小的優化點,但對于通知解耦卻是非常有效。

知其然,知其所以然。

思路比結論更重要。

責任編輯:趙寧寧 來源: 架構師之路
相關推薦

2015-07-08 15:55:01

NSStringcopystrong

2020-01-05 23:28:51

MQ消息進程

2017-04-05 21:43:08

MQ互聯網架構

2020-05-12 11:25:50

MySQLES數據庫

2017-05-15 09:55:07

2015-08-03 10:21:04

設計模式表達

2013-11-28 16:03:24

2012-09-24 10:20:39

JavaScriptJS

2022-05-19 10:27:34

機器學習人工智能

2024-08-05 01:22:16

2017-06-28 15:06:51

PythonLambda函數

2021-08-13 11:31:23

HTTP

2020-03-06 09:35:06

Python疫情Excel

2021-09-29 09:24:21

GCGo STW

2015-10-20 15:59:57

注釋代碼程序

2015-10-26 09:38:52

避免注釋代碼

2021-01-30 19:59:37

性能項目開源

2023-06-06 16:54:00

2015-02-01 09:45:46

2015-03-02 14:44:48

AngularJS jQuery超越
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜电影福利 | 中文字幕亚洲视频 | 日本精品一区二区三区视频 | 成人免费视频 | 蜜臀久久 | 久久久www成人免费无遮挡大片 | 精品国产一区二区三区久久久蜜月 | 国产免费麻豆视频 | 最新日韩欧美 | 日韩国产一区二区三区 | av一区二区三区 | 自拍偷拍在线视频 | 国产不卡一区在线观看 | 国产精品资源在线 | 国产日韩欧美一区 | 亚洲电影一区二区三区 | 天天综合天天 | 人人天天操| 精品av天堂毛片久久久借种 | 成人免费精品 | 国产黄色一级电影 | 97日韩精品| 国产乱码高清区二区三区在线 | 欧美成人一区二区三区 | 国产真实精品久久二三区 | 国产一区二区三区日韩 | 毛片国产 | www视频在线观看 | 亚洲精品免费在线观看 | 欧美中文字幕一区二区三区亚洲 | 欧美成人一区二区三区 | 亚洲精品一区在线 | 亚洲一区二区三区免费 | 日韩免费一区 | 国产丝袜一区二区三区免费视频 | 国产精品久久久久久久久久不蜜臀 | 久久久久久久久久久91 | 亚洲国产黄色av | 在线免费观看a级片 | 夜夜爽99久久国产综合精品女不卡 | 精品国产一区二区三区久久久蜜月 |