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

微服務架構下請求調用失敗了怎么辦?

開發 架構
微服務下的一次用戶調用可能會被拆成多系統間服務調用,任一次服務調用若發生問題都可能導致用戶調用最終失敗。

微服務帶來的不安因素

 

相比單體架構,微服務架構下的服務調用從同一機器內的本地調用變成不同機器間遠程調用,由此也帶來如下不確定因素:

  • 調用的執行是服務提供者,即使服務消費者本身正常,服務提供者也可能因CPU、網絡I/O、磁盤、內存、網卡等各種原因調用失敗,還可能因本身程序執行問題比如GC暫停導致失敗
  • 調用發生在兩臺機器間,所以要經過網絡傳輸,而網絡不可控,丟包、延遲或抖動都可能導致調用失敗。

所以針對服務調用失敗需特殊處理。

 

超時

 

微服務下的一次用戶調用可能會被拆成多系統間服務調用,任一次服務調用若發生問題都可能導致用戶調用最終失敗。

一個系統的問題會影響所有調用這個系統所提供服務的服務消費者,導致服務雪崩。

所以針對服務調用都要設置超時時間,避免所依賴服務一直未返回結果,將服務消費者阻死。

超時時間的設定

 

  • 太短,可能有些服務調用還未及時執行完成就被丟棄
  • 太長,可能導致服務消費者被拖死

需按服務提供者線上真實的服務水平,取99.9%或99.99%的調用都在多少ms內返回為準。

 

重試

 

雖設超時時間可及時止損,但服務調用結果畢竟失敗。大部分情況調用失敗都因網絡問題或個別服務提供者節點有問題,若能換個節點再次訪問說不定就成功。

假如一次服務調用失敗概率1%,那連續兩次服務調用失敗概率0.01%,失敗率降低到原來1%。所以經常還要設置一個服務調用超時后的重試次數。

假如某服務調用超時時間設為100ms,重試次數設為1,當服務調用超過100ms后,服務消費者就會立即發起第二次服務調用,而不會再等待第一次調用返回結果。

 

雙發

 

假如一次調用不成功概率1%,那連續兩次調用都不成功的概率就是0.01%,一個簡單的提高服務調用成功率的辦法就是每次服務消費者要發起服務調用的時候,都同時發起兩次服務調用,可

  • 提高調用的成功率
  • 兩次服務調用,哪個先返回就采用哪次返回結果,平均響應時間也要比一次調用更快

這就是雙發。

但這樣一次調用會給后端服務兩倍壓力,要消耗的資源也加倍,所以“魯莽”雙發不可取。

更為聰明的雙發,即

“備份請求”(Backup Requests)

 

服務消費者發起一次服務調用后,在給定的時間內如果沒有返回請求結果,那么服務消費者就立刻發起另一次服務調用。

注意該設定時間通常要比超時時間短得多,比如超時時間取P999,那么備份請求時間取的可能是P99或P90,因為若在P99或者P90時間內調用還沒有返回結果,那么大概率可以認為這次請求屬于慢請求,再次發起調用理論上返回要更快。

在實際線上服務運行時,P999由于長尾請求時間較長的緣故,可能要遠遠大于P99和P90。

比如一個服務的P999是1s,而P99只有200ms、P90只有50ms,這樣的話,如果備份請求時間取的是P90,那么第二次請求等待的時間只有50ms。

備份請求要設置一個最大重試比例,以避免在服務端出現問題時,大部分請求響應時間都會超過P90,導致請求量幾乎翻倍,給服務提供者造成更大的壓力。

可設置成15%

  • 盡量體現備份請求的優勢
  • 不會給服務提供者額外增加太大的壓力

 

熔斷

 

前面手段在服務提供者偶發異常時很有效,但若服務提供者故障,短時間內無法恢復,都不能提高服務調用成功率,還會因重試給服務提供者帶來更大的壓力而加劇故障。

就需服務消費者能夠探測到服務提供者發生故障,短時間內停止請求,給服務提供者故障恢復時間,待服務提供者恢復后,再繼續請求。

原理

 

把客戶端的每次服務調用用斷路器封裝,通過斷路器監控每次服務調用。

若某段時間內,服務調用失敗次數達到一定閾值,斷路器就會被觸發,后續服務調用直接返回,不會再向服務提供者發起請求。

熔斷后,一旦服務提供者恢復

 

服務調用如何恢復

 

Hystrix的斷路器包含三種狀態:關閉、打開、半打開

  • Closed態

正常情況下的斷路器處關閉狀態,偶發的調用失敗也不影響

  • Open態

當服務調用失敗次數達到閾值,斷路器就會處開啟狀態,后續服務調用直接返回,不會向服務提供者發起請求

  • Half Open態

當斷路器開啟,每隔一段時間,會進入半打開態,這時會向服務提供者發起探測調用,以確定服務提供者是否恢復正常。

若調用成功,斷路器就關閉

若失敗,斷路器繼續保持開啟態,并等待下個周期重新進入半打開態。

 

Hystrix會把每次服務調用都用HystrixCommand封裝,實時記錄每次服務調用狀態,包括成功、失敗、超時還是被線程拒絕。

當一段時間內服務調用的失敗率高于閾值,Hystrix的斷路器就會進入進入打開態,新的服務調用直接返回,不會向服務提供者發起調用。

再等待設定時間間隔后,Hystrix的斷路器又會進入半打,新的服務調用又可重新發給服務提供者。若一段時間內服務調用失敗率依然高于閾值,斷路器會重新進入打開態,否則,重置為關閉態。

決定斷路器是否打開失敗率閾值通過如下參數:

  1. HystrixCommandProperties.circuitBreakerErrorThresholdPercentage() 

斷路器何時進入半打開態時間間隔通過如下參數:

  1. HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds() 

斷路器關鍵在于

 

統計一段時間內服務調用的失敗率

 

滑動窗口算法

 

 

 

 

默認情況下,滑動窗口包含10個桶,每個桶時間寬度1s,每桶記錄這1s所有服務調用成功、失敗、超時的及被線程拒絕的次數。當新1s到來,滑動窗口就往前滑動,丟棄最舊桶,把最新桶包進來。

任意時刻,Hystrix都會取滑動窗口內所有服務調用的失敗率作為斷路器開關狀態的判斷依據,這10個桶內記錄的所有失敗的、超時的、被線程拒絕的調用次數之和除以總的調用次數就是滑動窗口內所有服務的調用的失敗率。

 

總結

 

對非冪等,即同一服務調用重復多次返回結果不同的,不可重試,比如大部分上行請求都是非冪等。

雙發是在重試基礎上進行一定優化,減少超時等待時間,對于長尾請求場景很有效。采用雙發后,服務調用的P999能大幅減少,是提高服務調用成功率的有效手段。

熔斷能很好解決依賴服務故障引起的連鎖反應,對于線上存在大規模服務調用尤其是對非關鍵路徑的調用,即使調用失敗也對最終結果影響不大的情況下,更應引入熔斷。

參考

  • https://martinfowler.com/bliki/CircuitBreaker.html
  • https://github.com/Netflix/Hystrix/wiki/How-To-Use
  • 本文轉載自微信公眾號「 JavaEdge」,可以通過以下二維碼關注。轉載本文請聯系 JavaEdge公眾號。

 

責任編輯:武曉燕 來源: JavaEdge
相關推薦

2010-03-04 09:06:35

Windows 7Apache安裝

2009-11-03 08:56:02

linux死機操作系統

2022-12-19 11:31:57

緩存失效數據庫

2022-07-05 11:48:47

MySQL死鎖表鎖

2024-07-01 09:55:13

2022-07-05 14:19:30

Spring接口CGLIB

2011-11-16 10:02:48

DNSDNS記錄DNS記錄消失

2011-11-18 10:52:00

2022-10-14 08:18:07

Guavaweb應用

2024-07-08 11:30:35

2023-07-11 08:55:26

系統白名單AO

2018-01-30 09:25:04

2022-09-05 09:02:01

服務器CPU服務

2023-12-25 08:22:02

2018-01-30 15:08:05

2020-07-10 08:46:26

HTTPS證書劫持網絡協議

2021-01-05 10:48:38

RedisAOF日志RDB快照

2024-08-06 08:08:14

2009-01-19 09:19:58

局域網遠程控制服務器

2020-02-24 11:02:37

斷網網絡故障
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线精品视频 | 在线一区二区观看 | 午夜精品视频 | 成人精品网| 久久久久国产一区二区三区四区 | 日韩在线免费 | 蜜桃视频在线观看www社区 | 欧美亚洲视频 | 国产一区二区三区四区 | 四虎永久| www亚洲精品 | 欧美在线一区二区三区 | 国产精品国产三级国产aⅴ中文 | 九九热精品在线视频 | 国产精品99久久久久久久vr | 国产欧美精品一区二区 | 国产综合av | 精品无码久久久久国产 | 一级片网站视频 | 国产四虎 | 午夜视频在线视频 | 免费一级黄色录像 | 欧美日韩在线视频一区二区 | 亚洲精品视 | 日韩高清国产一区在线 | 欧美精品福利 | 国产精品1区2区 | 久久99久久99精品免视看婷婷 | 亚洲视频在线一区 | 在线不卡视频 | 精品九九 | a级大片 | 国产精品美女久久久久aⅴ国产馆 | 91视频亚洲 | 亚洲狠狠丁香婷婷综合久久久 | 午夜不卡一区二区 | 性做久久久久久免费观看欧美 | www.夜夜骑 | 精品欧美一区二区三区久久久小说 | 国产黄色小视频在线观看 | 97人人超碰 |