服務降級 Hystrix斷路器
阿新 • • 發佈:2021-11-01
一、分散式系統面臨的問題:
複雜分散式體系結構中的應用程式有數十個依賴關係,每個依賴關係在某些時候將不可避免地失敗。
二、服務雪崩:
多個微服務之間呼叫的時候,假設微服務A呼叫微服務B和微服務C,微服務B和微服務C又呼叫其他的微服務,這就是所謂的“扇出”。如果扇出的鏈路上某個微服務的呼叫響應時間過長或者不可用,對微服務A的呼叫就會佔用越來越多的系統資源,進而引起系統崩潰,所謂“雪崩效應”。
對於高流量的應用來說,單一的後端依賴可能會導致所有伺服器上的說有資源都在幾秒鐘內飽和。比失敗更糟糕的是,這些應用程式還可能導致服務之間的延遲增加,備份佇列,執行緒和其他系統資源緊張,導致整個系統發生更多的級聯故障。這些都表示需要對故障和延遲進行隔離和管理,以便單個依賴關係的失敗,不能取消整個應用程式或系統,所以,通常當你發現一個模組下的某個例項失敗後,這時候這個模組依然還會接收流量,然後這個有問題的模組還呼叫了其他的模組,這樣就會發生級聯故障,或者叫雪崩。
三、Hystrix是什麼?
Hystrix 是一個用於處理分散式系統的延遲和容錯的開源庫,在分散式系統裡,許多依賴不可避免的會呼叫失敗,比如超時,異常等,Hystrix能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,避免級聯故障,以提高分散式系統的彈性。
“斷路器”本身是一種開關裝置,當某個服務單元發生故障之後,通過斷路器的故障監控(類似熔斷保險絲),向呼叫方返回一個符合預期的、可處理的備選響應(FallBack),而不是長時間的等待或者丟擲呼叫方無法處理的異常,這樣就保證了服務呼叫方的現成不會被長時間、不必要地佔用,從而避免了故障在分散式系統中的蔓延,乃至雪崩。
三、Hystrix能幹什麼?
服務降級
服務熔斷
接近實時的監控
四、官方資料:
https://github.com/Netflix/Hystrix/wiki/How-To-Use
五、Hystrix重要概念:
5.1 服務降級:
fallback
不讓客戶端等待並立刻返回一個友好的提示,哪些情況會觸發降級
① 程式執行異常
② 超時
③ 服務熔斷觸發服務降級
④ 執行緒池/訊號量打滿也會導致服務降級
5.2 服務熔斷:
類比保險絲達到最大服務訪問後,直接拒絕訪問,拉閘限電,然後呼叫服務降級的方法並返回友好提示
服務的降級-》進而熔斷-》恢復呼叫鏈路
5.3 服務限流:
秒殺高併發等操作,嚴禁一窩蜂的過來擁擠,大家排隊,一秒鐘N個,有序進行。