1. 程式人生 > >spring cloud系列教程(9)---Hystrix是什麼以及服務熔斷

spring cloud系列教程(9)---Hystrix是什麼以及服務熔斷

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油https://img-blog.csdnimg.cn/20181129224604602.png ​  

1.分散式面臨的問題

分散式系統面臨的問題:多個微服務之間呼叫的時候,假設微服務A呼叫微服務B和微服務C,微服務B和微服務C又呼叫其他的微服務,這就是所謂的"扇出".如果扇出的鏈路上某個微服務的呼叫響應時間過長或者不可用,對微服務A的呼叫就會佔用越來越多的系統資源,進而引起系統崩潰,所謂的"雪崩效應". 對於高流量的應用來說,單一的後端依賴可能會導致所有伺服器上的所有資源都在幾秒鐘內飽和.比失敗更糟糕的是,這些應用程式還可能導致服務之間的延遲增加,備份佇列,執行緒和其他系統資源緊張,導致整個系統發生更多的級聯故障.這些都表示需要對故障和延遲進行隔離和管理,以便單個依賴關係的失敗,不能取消整個應用程式或系統.

2.Hystrix是什麼

Hystrix是一個用於處理分散式系統的延遲和容錯的開源庫,在分散式系統裡,許多依賴不可避免的會呼叫失敗,比如超時,異常等,Hystrix能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,避免級聯故障,以提高分散式系統的彈性."斷路器"本身是一種開發裝置,當某個服務單元發生故障之後,通過斷路器的故障監控(類似熔斷保險絲),向呼叫方返回一個符合預期的,可處理的被選響應(FallBack),而不是長時間的等待或者丟擲呼叫方法處理的異常,這樣就保證了服務呼叫方的執行緒不會被長時間,不必要地佔用,從而避免了故障在分散式系統中蔓延,乃至雪崩

3.什麼是服務熔斷

熔斷機制是應對雪崩效應的一種微服務鏈路保護機制.當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的呼叫,快速返回"錯誤"的響應資訊.當檢測到該節點微服務呼叫響應正常後恢復呼叫鏈路.在SpringCloud框架裡熔斷機制通過Hystrix實現.Hystrix會監控微服務間呼叫的狀況,當失敗的呼叫到一定閾值,預設是5秒內20次呼叫失敗就會啟動熔斷機制.熔斷機制的註解是@HystrixCommand

4.程式碼編寫

新建hystrix8001子專案,加入hystrix依賴

全部程式碼:https://github.com/ZhZGod/spring-cloud-codes