天天看點

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

1.Hystrix斷路器

1.1.分布式系統面臨的問題

複雜分布式體系結構中的應用程式有數十個依賴關系,每個依賴關系在某些時候将不可避免地失敗。

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

服務雪崩

多個微服務之間調用的時候,假設微服務A調用微服務B和微服務C,微服務B和微服務C又調用其它的微服務,這就是所謂的“扇出”。如果扇出的鍊路上某個微服務的調用響應時間過長或者不可用,對微服務A的調用就會占用越來越多的系統資源,進而引起系統崩潰,所謂的“雪崩效應”.

示例:

在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導緻級聯故障,進而造成整個系統不可用的情況,這種現象被稱為服務雪崩效應。服務雪崩效應是一種因“服務提供者”的不可用導緻“服務消費者”的不可用,并将不可用逐漸放大的過程。

什麼是災難性的雪崩效應?我們通過結構圖來說明,如下

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

正常情況下各個節點互相配置,完成使用者請求的處理工作

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

當某種請求增多,造成"服務T"故障的情況時,會延伸的造成"服務U"不可用,及繼續擴充,如下

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

最終造成下面這種所有服務不可用的情況

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

這就是我們講的災難性雪崩!

造成雪崩的原因可以歸納為以下三個:

服務提供者不可用(硬體故障,程式Bug,緩存擊穿,使用者大量請求)
重試加大流量(使用者重試,代碼邏輯重試)
服務調用者不可用(同步等待造成的資源耗盡)      

最終的結果就是一個服務不可用,導緻一系列服務的不可用,而往往這種後果是無法預料的。

1.2.Hystrix概述

​Hystrix​

​ [hɪst’rɪks]的中文含義是豪豬,因其背上長滿了刺而擁有自我保護能力。

Hystix,即熔斷器。類似保險絲角色!

首頁:https://github.com/Netflix/Hystrix/

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

Hystrix是一個用于處理分布式系統的延遲和容錯的開源庫,在分布式系統裡,許多依賴不可避免的會調用失敗,比如逾時、異常等,Hystrix能夠保證在一個依賴出問題的情況下,不會導緻整體服務失敗,避免級聯故障,以提高分布式系統的彈性。

“斷路器”本身是一種開關裝置,當某個服務單元發生故障之後,通過斷路器的故障監控(類似熔斷保險絲),向調用方傳回一個符合預期的、可處理的備選響應(FallBack),而不是長時間的等待或者抛出調用方無法處理的異常,這樣就保證了服務調用方的線程不會被長時間、不必要地占用,進而避免了故障在分布式系統中的蔓延,乃至雪崩。

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

1.3.熔斷器的工作機制:

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

正常工作的情況下,用戶端請求調用服務API接口:

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

當有服務出現異常時,直接進行失敗復原,服務降級處理:

玩轉SpringCloud專題(十三)-SpringCloud之Hystrix入門

當服務繁忙時,如果服務出現異常,不是粗暴的直接報錯,而是傳回一個友好的提示,雖然拒絕了使用者的通路,但是會傳回一個結果。

1.4.Hystrix主要功能

- 服務降級
- 服務熔斷
- 服務限流
- 接近實時的監控
- ......      

繼續閱讀