what
服務降級:
服務器忙,請稍後再試,不讓客戶端等待並立刻返回一個友好提示,fallback
哪些情況觸發降級?
- 程序運行異常
- 超時
- 服務熔斷觸發服務降級
- 線程池/信號量打滿也會導致服務降級
降級用在服務提供者還是服務消費者呢?
都可以的,不過大多數情況是用在服務消費者多一些啦。
服務熔斷:
類比保險絲達到最大服務訪問後,直接拒絕訪問,拉閘限電,然後調用服務降級的方法並返回友好提示,fallback
熔斷是什麼?
熔斷機制是對應雪崩效應的一種微服務鏈路保護機制。當扇出鏈路的某個微服務出錯不可用或者響應時間太長時,會進行服務的降級,進而熔斷改節點微服務的調用,快速返回錯誤的響應信息。
當檢測到該節點微服務調用響應正常後,恢復調用鏈路。
服務限流:
秒殺高併發等操作,嚴禁一窩蜂的過來擁擠,大家排隊,一秒鐘N個,有序進行
why
爲什麼微服務我們要用Hystrix呢?因爲它可以解決分佈式系統交互時超時處理和容錯的類庫, 它同樣擁有保護系統的能力。
How
在SpringCloud框架裏,熔斷機制通過Hystrix實現。Hystrix會監控微服務間調用的狀況,當失敗的調用到一定閾值,缺省是5秒內20次調用失敗,就會啓動熔斷機制。使用@HystrixHystrixCommand註解。
maven引入Hystrix依賴
<!--hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
假設在調用某個服務的時候出現異常,在方法上加@HystrixCommand註解,通過她中fallbackMethod去調用提示方法。
假設我們出現超時的異常
註解
@HystrixProperty
@HystrixProperty全局服務降級
避免代碼膨脹,合理減少代碼量,我們可以通過@HystrixProperty解決每個方法上加一個降級方法。通過@HystrixProperty直接在類上加@HystrixProperty就可以了,方法上直接寫@HystrixCommand註解。
實例:
@FeignClient
@FeignClient 通配服務降級
通過@FeignClient中的fallback解決了解耦,實現了服務降級,解決了到嗎膨脹,代碼混亂。
實例: