1 熔斷器Hystrix
1.1 爲什麼要使用熔斷器
在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致級聯故障,進而造成整個系統不可用的情況,這種現象被稱爲服務雪崩效應。服務雪崩效應是一種因“服務提供者”的不可用導致“服務消費者”的不可用,並將不可用逐漸放大的過程。
如果下圖所示:A作爲服務提供者,B爲A的服務消費者,C和D是B的服務消費者。A不可用引起了B的不可用,並將不可用像滾雪球一樣放大到C和D時,雪崩效應就形成了。
如何避免產生這種雪崩效應呢?我們可以使用Hystrix來實現熔斷器。
1.2 什麼是Hystrix
Hystrix [hɪst'rɪks]的中文含義是豪豬, 因其背上長滿了刺,而擁有自我保護能力
Hystrix 能使你的系統在出現依賴服務失效的時候,通過隔離系統所依賴的服務,防
止服務級聯失敗,同時提供失敗回退機制,更優雅地應對失效,並使你的系統能更快地
從異常中恢復。
瞭解熔斷器模式請看下圖:
1.3 快速體驗
Feign 本身支持Hystrix,不需要額外引入依賴。
(1)修改tensquare_qa模塊的application.yml ,開啓hystrix
feign:
hystrix:
enabled: true
(2)在com.tensquare.qa.client包下創建impl包,包下創建熔斷實現類,實現自接口LabelClient
@Component
public class LabelClientImpl implements LabelClient {
@Override
public Result findById(String id) {
return new Result(false, StatusCode.ERROR,"熔斷器啓動了");
}
}
(3)修改LabelClient的註解
@FeignClient(value="tensquare‐base",fallback = LabelClientImpl.class)
(4)測試運行
重新啓動問答微服務,測試看熔斷器是否運行。