摘要:當接口相應時間明顯超過其歷史平均響應時間時,動態降低此接口的可用線程數量。文章中給出的解決方案增大工作線程數降低超時時間拆分接口和服務層治標不治本。
跨公網調用第三方接口的服務層的思考 問題
前日有幸拜讀了架構師之路的58沈劍所寫的 跨公網調用的大坑與架構優化方案 一文。文中,作者提到了一個很值得思考的問題:
如何設計一個為內部系統提供跨公網第三方接口調用的服務層,才能避免因部分接口問題導致整體失效的問題?問題的具體描述請參見原文。
在看到問題后,我先試著想了幾個解決方案。
我的解決方案對于每次接口調用,都記錄其響應時間,并對服務層內每個接口求出其平均響應時間。
對于每個接口,根據其平均調用時間,設置其可用工作線程數的閾值,保證當接口出現異常時,不會影響到所有工作線程。
當接口相應時間明顯超過其歷史平均響應時間時,動態降低此接口的可用線程數量。
當接口的異常狀態持續一段時間仍未恢復時,停止為該接口提供服務,改用對進行輪詢的方式,來保證當其恢復可用后可以迅速恢復對該接口的服務。
文章中給出的解決方案增大工作線程數、降低超時時間、拆分接口和服務層(治標不治本)。
對于可以接受非實時數據的內部系統調用方提供異步代理,對其屏蔽具體細節。即緩存外部接口調用的返回結果,對內部調用方直接提供對應的緩存結果,并定期調用外部接口來完成數據的更新。
對于可以冗余的外部接口,保證其冗余性,在主接口調用失敗后迅速將服務轉移至備份接口。
對于是向外部接口推(主動同步)數據而不是拉數據的業務場景,先同步寫本地數據庫,本地寫成功后對內部調用方返回調用成功的消息,其后異步地向第三方接口推數據。
我對自己的反思解決方案局限在一個具體的技術實現思路上(限流、動態規劃),考慮太窄,沒有結合實際的業務需求分析可行性。目前還停留在解決具體技術問題的階段,看山只是山,應該努力培養自己的宏觀思維。
我提出的解決方案需要直接操作服務容器的線程調度,難度大,技術可行性也未知。
因為我的計算機網絡相關從業背景,我在思考過程中受到各種網絡協議的設計思路影響很大(比如IP SLA探針、GLBP中的各種權重判斷等),這點我認為在我的程序設計思維中可能會讓我持續受益。雖然現在已經不從事網絡相關行業了,但是也應該保持住網絡工程師對于系統穩定性、可用性、擴展性的不懈追求。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11838.html
摘要:負載均衡器又分為四層和七層負載均衡器,顧名思義,四層的工作在協議棧上,通過修改請求報文的源目的地址和源目的端口來轉發,比如,一個主機對應一個域名,適用于每秒超過一萬的業務。每一次變更都是一次發布,每一次發布都是一個獨立的鏡像啟動 showImg(https://segmentfault.com/img/bVbvtgW?w=1080&h=720); 以一個經典問題拋磚引玉,當用戶在瀏覽器...
摘要:接入層作用一的聚合。接入層作用二服務發現與動態負載均衡既然統一的入口變為了接入層,則接入層就有責任自動的發現后端拆分,聚合,擴容,縮容的服務集群,當后端服務有所變化的時候,能夠實現健康檢查和動態的負載均衡。 此文已由作者劉超授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 這個系列是微服務高并發設計,所以我們先從最外層的接入層入手,看都有什么樣的策略保證高并發。...
摘要:通常情況下,偽都是基于第一層次與第二層次設計的。為了解決這個版本不兼容問題,在設計的一種實用的做法是使用版本號。例如,建議第三位版本號通常表示兼容升級,只有不兼容時才需要變更服務版本。 原文地址:梁桂釗的博客 博客地址:blog.720ui.com 歡迎關注公眾號:「服務端思維」。一群同頻者,一起成長,一起精進,打破認知的局限性。 有一段時間沒怎么寫文章了,今天提筆寫一篇自己對 API 設...
摘要:通常情況下,偽都是基于第一層次與第二層次設計的。為了解決這個版本不兼容問題,在設計的一種實用的做法是使用版本號。例如,建議第三位版本號通常表示兼容升級,只有不兼容時才需要變更服務版本。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關注公眾號:「服務端思維」。一群同頻者,一起成長,一起精進,打破認知的局限性。 有一段時間沒怎么寫文章了,今天提筆寫一篇...
閱讀 1083·2021-09-22 15:19
閱讀 1697·2021-08-23 09:46
閱讀 2226·2021-08-09 13:47
閱讀 1405·2019-08-30 15:55
閱讀 1408·2019-08-30 15:55
閱讀 1974·2019-08-30 15:54
閱讀 2795·2019-08-30 15:53
閱讀 713·2019-08-30 11:03