(四)Hystrix容錯保護
阿新 • • 發佈:2018-11-23
Feign預設是整合了Ribbon和Hystrix這兩個框架,所以程式碼我們在上一篇的基礎上進行修改,啟動Eureka,service-hello,Feign
所謂的熔斷機制和日常生活中見到電路保險絲是非常相似的,當出現了問題之後,保險絲會自動燒斷,以保護我們的電器, 那麼如果換到了程式之中呢?
當現在服務的提供方出現了問題之後整個的程式將出現錯誤的資訊顯示,而這個時候如果不想出現這樣的錯誤資訊,而希望替換為一個錯誤時的內容。
一個服務掛了後續的服務跟著不能用了,這就是雪崩效應
對於熔斷技術的實現需要考慮以下幾種情況:
· 出現錯誤之後可以 fallback 錯誤的處理資訊;
· 如果要結合 Feign 一起使用的時候還需要在 Feign(客戶端)進行熔斷的配置。
在上文的feign專案中,修改啟動類
@EnableCircuitBreaker // 開啟Hystrix容錯 @EnableDiscoveryClient @EnableFeignClients //開啟Feign的功能: @SpringBootApplication public class SpringCloundEurekaFeginExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringCloundEurekaFeginExampleApplication.class, args); } }
properties檔案新增配置,開啟hystrix
feign.hystrix.enabled=true
實現IFeignService的FallBack
新增FeignServiceFallback
@Component public class FeignServiceFallback implements IFeginService { @Override public String index() { return "錯誤了是嗎???"; } }
修改IFeignService
//代表改介面用費"service-hello"的服務 提供 @FeignClient(value = "service-hello", fallback = FeignServiceFallback.class) public interface IFeginService { @RequestMapping(value = "/index") public String index(); }
這個僅僅是在@FeignClient
註解中增加了fallback
的配置,並設定其值為我們剛剛新建的類:FeignServiceFallback。
接下來停掉SERVICE-HELLO或者在服務方法直接拋錯
可以看到FallBack已經啟作用,當全部PRODUCT-SERVICE
不起作用時,SERVICE-FEIGN中的FeignServiceFallback進入了回退處理。