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

第三方接口掛掉,我們的服務怎么能不背鍋?

開發 架構
第三方接口掛掉,你們的服務會受影響么?架構要如何優化,才能避免背這口鍋呢?

第三方接口掛掉,你們的服務會受影響么?

架構要如何優化,才能避免背這口鍋呢?

業務需要跨公網調用一個第三方服務提供的接口,為了避免每個調用方都依賴于第三方服務,往往會抽象一個邊界服務:

  • 解除調用方與第三方接口的耦合;
  • 當第三方的接口變動時,只有邊界服務需要修改,而不是所有調用方均修改;

此時接口調用流程是什么樣的呢?

如上圖1-4所述:

  • 業務調用方調用內部service;
  • 內部service跨公網調用第三方接口;
  • 第三方接口返回結果給內部service;
  • 內部service返回結果給業務調用方;

這個過程存在什么潛在的大坑呢?

內部服務可能對上游業務提供了很多服務接口,當有一個接口跨公網第三方調用超時時,可能導致所有接口都不可用,即使大部分接口不依賴于跨公網第三方調用。

為什么會出現這種情況呢?

  • 內部服務對業務方提供的N個接口,會共用服務容器內的工作線程(假設有100個工作線程);
  • 某個接口跨公網依賴于第三方的接口發生異常,或者網絡抖動,導致接口超時(不妨設超時時間為5秒),這個工作線程庫可能會被占用5秒鐘,然后超時返回業務調用方;
  • 假設這個請求的吞吐量為20qps,言下之意,很短的時間內,所有的100個工作線程都會被卡在這個第三方超時等待上,而其他N-1個原本沒有問題的接口,也得不到工作線程處理;

潛在優化方案?

  • 增大工作線程數(不根本解決問題);
  • 降低超時時間(不根本解決問題);
  • 垂直拆分,N個接口拆分成若干個服務,使得在出問題時,被牽連的接口盡可能少(不根本解決問題);

跨公網調用的穩定性優化,有三種常見的方案。

方案一:異步代理法

業務場景:通過OpenID實時獲取微信用戶基本信息。

解決方案:增加一個代理,向服務屏蔽究竟是“本地實時”還是“異步遠程”去獲取返回結果。

本地實時流程如上圖1-5:

(1) 業務調用方調用內部service;

(2) 內部service調用異步代理service;

(3) 異步代理service通過OpenID在本地拿取數據;

(4) 異步代理service將數據返回內部service;

(5) 內部service返回結果給業務調用方;

異步遠程流程如上圖6-8粗箭頭的部分:

(6) 異步代理service定期跨公網調用微信服務;

(7) 微信服務返回數據;

(8) 刷新本地數據;

  • 優點:公網抖動,第三方接口超時,不影響內部接口調用。
  • 不足:本地返回的不是最新數據(很多業務可以接受數據延時)。

有時候,內部service和異步代理service可以合成一個service。

方案二:第三方接口備份與切換法

業務場景:調用第三方短信網關,或者電子合同等。

解決方案:同時使用(或者備份)多個第三方服務。

流程如上圖1-4:

(1) 業務調用方調用內部service;

(2) 內部service調用第一個三方接口;

(3) 超時后,調用第二個備份服務,未來都直接調用備份服務,直到超時的服務恢復;

(4) 內部service返回結果給業務調用方;

  • 優點:公網抖動,第三方接口超時,不影響內部接口調用(初期少數幾個請求會超時)。
  • 不足:不是所有公網調用都能夠像短信網關,電子合同服務一樣有備份接口的,像微信、支付寶等就只此一家。

方案三:異步調用法

業務場景:本地結果,同步第三方服務,例如用戶在天鵝到家平臺下單,天鵝到家平臺需要通知平臺商家為用戶提供服務。

解決方案:本地調用成功就返回成功,異步調用第三方接口同步數據(和異步代理有微小差別)。

本地流程如上圖1-3:

(1) 業務調用方調用內部service;

(2) 內部service寫本地數據;

(3) 內部service返回結果給業務調用方成功;

異步流程如上圖4-5粗箭頭的部分:

(4) 異步service定期將本地數據取出(或者通知也行,實時性好);

(5) 異步調用第三方接口同步數據;

  • 優點:公網抖動,第三方接口超時,不影響內部接口調用。
  • 不足:不是所有業務場景都可以異步同步數據。

總結

跨公網調用第三方,可能存在的問題:

  • 公網抖動,第三方服務不穩定,影響自身服務;
  • 一個接口超時,占住工作線程,影響其他接口;

降低影響的治標優化方案:

  • 增大工作線程數;
  • 降低超時時間;
  • 服務垂直拆分;

業務需求決定技術方案,治本解決方案:

  • 業務能接受舊數據:讀取本地數據,異步代理定期更新數據;
  • 有多個第三方服務提供商:多個第三方互備;
  • 向第三方同步數據:本地寫成功就算成功,異步向第三方同步數據;

希望第三方的服務掛掉,不再影響大家的服務。

這個鍋,我們不背。

知其然,知其所以然。

思路比結論更重要。

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

2015-11-05 16:44:37

第三方登陸android源碼

2017-12-11 15:53:56

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2015-04-27 19:32:16

Moxtra

2015-10-22 10:36:09

OracleRimini StreOracle訴訟

2023-09-14 10:55:16

2018-12-04 10:24:23

VueReactJQuery

2017-05-16 13:24:02

LinuxCentOS第三方倉庫

2014-07-25 09:33:22

2019-09-03 18:31:19

第三方支付電商支付行業

2016-10-21 14:09:10

2009-12-31 14:38:34

Silverlight

2016-12-28 17:47:56

API

2023-04-16 19:34:01

2017-11-01 06:40:33

2022-11-16 11:53:38

第三方應用kubectl

2011-10-08 14:37:59

漏洞

2019-09-02 14:59:41

蘋果維修設備

2020-09-10 12:24:30

Java 后端服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九色在线 | 亚洲成人一区二区在线 | 亚洲免费观看 | 特级毛片www| 影音先锋中文字幕在线观看 | 精品一区二区三区在线观看国产 | 成人在线免费视频观看 | 久久久精品 | 国产精品免费一区二区三区 | 国产精品久久久久久久久久久免费看 | 91久久国产综合久久91精品网站 | av在线伊人 | 免费观看黄 | 日韩色在线 | 精品一二区| 久久久91精品国产一区二区三区 | 亚洲精品中文字幕在线观看 | 日本成人中文字幕在线观看 | 欧美亚洲国语精品一区二区 | 成人性生交大片免费看r链接 | 欧美性久久| 国产精品永久 | 午夜私人影院 | 久操伊人| 在线一区 | 欧美日韩一 | 波多野结衣一区二区 | 久久国际精品 | 日本视频一区二区 | 成人午夜免费福利视频 | 精品久久久久久久久亚洲 | 成在线人视频免费视频 | 日韩精品在线视频 | 91一区二区三区 | 91原创视频 | 久草视频在线播放 | 一区欧美 | 国产精品成人国产乱一区 | 欧美性网 | 久久精品国产一区二区电影 | 亚洲人人 |