一旦服務阻塞就進行服務降級或線程隔離。要不然就會導致大面積服務的癱瘓,Hystrix就是干這個的,一出現不健康的服務就進行熔斷,不阻塞后面線程的執行。
引入依賴:
加注解:
這三個注解可以用一個注解搞定:
當出現服務阻塞時,調用下面的方法:
將注解加在類上,進行統一處理,不然的話,每個方法上都要添加如上這段內容,太臃腫:
defaultFallback指向的通用方法是:
類上添加@DefaultProperties注解指定默認的熔斷處理方法后,只需要在方法上添加@HystrixCommand注解即可:
可以通過@HystrixCommand注解設置服務的超時時間,超過設定的時間才會觸發熔斷機制,框架默認配置的超時時間是1000ms毫秒:
也可以在配置文件中配置全局的超時時間屬性,比如將默認的1秒配置為3秒,整個項目都通用:
這樣默認的超時時間是3秒,如果某個方法要自定義超時時間就使用上面注解的方式。
這個default可以換成服務名稱或方法名稱,就只對指定的服務或方法起作用。
模擬服務超時場景:
線程隔離在我們進行代碼配置的時候就已經在底層實現了。