SpringCloud-組件服務熔斷Hystrix和聲明式服務消費Feign

一、什麼是Hystrix?

Hystrix叫做熔斷器也稱爲斷路器,微服務架構中的熔斷器就是當被調用方沒有響應時,調用方直接返回一個錯誤響應即可,而不是長時間的等待,這樣避免調用時因爲等待而現場一直得不到釋放,避免故障在分佈式系統間蔓延。

例如: 電商平臺中用戶下單,我們一個是訂單服務,一個是減庫存服務,當用戶下訂單時調用下訂單服務,然後下訂單服務又調用減庫存服務,如果減庫存服務響應延遲或者沒有響應,則會造成下訂單服務的線程掛起等待,如果大量的用戶請求下訂單,出現大量請求堆積,引起下訂單服務也不可用,或者下訂單服務還需要提供給其它服務來進行使用,這就造成了整個微服務出現癱瘓的情況。

二、Hystrix在項目中的使用

在入口類中使用@enableCircuitBreaker註解開啓斷路器功能,也可以使用 @SpringCloudApplication註解代替我們主類上的三個註解。

@HystrixCommand(fallbackMethod="error", commandProperties={
	@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds", 
value="1500")}) //熔斷器,調用不通,回調 error()方法

fallbackMethod 整個參數就是制定服務不可用是回調的方法;

三、Hystrix的服務降級

有了服務的熔斷後,隨之就會有服務的降級,所謂服務的降級,就是當某個服務熔斷之後,服務端提供的服務將不再調用,此時有客戶端自己來準備一個本地的fallback回調,返回一個默認值來代表服務端的返回。

四、Hystrix的異常處理

我們在調用服務提供者時,我們自己也有可能會拋異常,默認情況下拋出的異常會自動進行服務降級,交給服務降級中的方法區處理;

public String error(Throwable throwable) {
	 System.out.println(throwable.getMessage());
 return "error"; }

五、聲明式服務消費Feign

Feign是整合了 Ribbon和Hystrix兩個組件。這種整合猶如SpringBoot 對Spring 和SpringMVC的整合一樣。大大簡化服務調用的流程。

@EnableFeignClients 表示開啓對SpringCloud Feign的支持

@FeignClient註解來指定服務名稱,進而綁定服務,然後再通過SpringMVC中提供的註解來綁定服務提供者提供的接口

舉個例子:

@FeignClient("01-springcloud-service-provider")
	public interface HelloService {
	 @RequestMapping("/service/hello")
	 public String hello();
}

這裏就相當於綁定了一個名叫01-springcloud-service-provider

屬性配置:

#配置服務的名稱
...
spring.application.name=05-springcloud-service-feign
...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章