參考Spring Cloud官方文件第13、14、15章
13. Circuit Breaker: Hystrix Clients
Netflix提供了一個叫Hystrix的類庫,它實現了斷路器模式。在微服務架構中,通常一個微服務會呼叫多個其他的微服務。一個相對低層級的服務失敗可能造成上層應用的級聯失敗,服務訪問量越大失敗率越高。當斷路開啟的時候,這個呼叫就被終止了。開啟的斷路可以阻止級聯失敗。
13.1 How to Include Hystrix
15.1 How to Include Hystrix Dashboard
為了使用Hystrix儀表盤,需要在Spring Boot main class上用@EnableHystrixDashboard註解標註。
上程式碼
在原先的ribbon-demo基礎上修改
以上是在Ribbon中使用Hystrix,而Feign預設就支援Hystrix。下面看一下在Feign中如何使用Hystrix。
17.4 Feign Hystrix Support
如果Hystrix在classpath中,並且feign.hystrix.enabled=true的話,那麼Feign將用斷路器包裝所有的方法。
注意:在Spring Cloud Dalston之前的版本中,如果classpath中有Hystrix,那麼Feign預設回為所有的方法加上斷路器。這種預設的行為在Spring Cloud Dalston版本中被改變了,取而代之的是可選的。
17.5 Feign Hystrix Fallbacks
Hystrix支援回撥,當斷路器開啟的時候回回撥預設的程式碼。為了回撥指定的方法,可以在@FeignClient中設定fallback屬性,它的值是類的名字。例如:
如果需要獲得回撥觸發的原因,可以使用@FeignClient的fallbackFactory屬性。
上程式碼
基於先前的feigen-demo工程改造
其它的不變
個人感覺還是用@EnableCircuitBreaker+@HystrixCommand的方式更方便一點兒
至於斷路器儀表盤還是跟前面一樣配置