1.啥是熔斷器,爲啥要用它?
在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致一堆故障
從而造成整個系統的故障,這種現象叫做服務雪崩,服務雪崩是因爲“服務生產者”涼涼而
造成“消費消費者”的不可用,並將不可用逐漸放大的過程!
下面放一張圖慢慢看文字進行理解!
注意:藍色代表可以用,橙色代表涼涼。
第一個過程結果是正常的,
第二個過程A作爲服務生產者自己涼涼了
到第三個過程a和b的服務全部掛掉了,
到第四個過程cd調用b的時候發現一路全部掛掉了。
Hystrix:中文名字叫豪豬,形容豪豬身上的刺,從而有了保護能力。
hystrix的能力就是在你調用服務實效的時候,通過隔離系統所依賴的服務,
防止服務級聯失敗,同時提供回退的機制,優雅的處理實效問題,並可以更加快的從異常中恢復。
這裏講下個人的理解,在上一篇講feign服務之間的調用,有個問題沒有提出來,就是這個服務之間的調用異常問題,
使用過dubbo框架的朋友肯定對請求超時非常熟悉,在這一點上,它們都是服務之間的調用異常,有很多中原因可能是網咯或者是其他的,但是怎麼去解決這一的異常就是個麻煩的問題,hystrix的出現就好像針對服務之間的調用異常捕獲一樣!
下面通過以下段代碼來了解下再項目中如何使用!
首先在yml配置文件添加
feign:
hystrix:
enabled: true
然後就是在調用服務的client包下面創建一個impl包,寫一個熔斷器實現類,
實現調用服務接口!在那個接口方法裏寫如下信息!
接口層的註解也是需要修改下!
@FeignClient(value="base",fallback = LabelClientImpl.class)