日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

降级,超时

發布時間:2024/4/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 降级,超时 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?我們先來解釋一下降級,降級是當我們的某個微服務響應時間過長,或者不可用了,講白了也就是那個微服務調用不了了,我們不能吧錯誤信息返回出來,或者讓他一直卡在那里,所以要在準備一個對應的策略(一個方法)當發生這種問題的時候我們直接調用這個方法來快速返回這個請求,不讓他一直卡在那 。

講了這么多,我們來看看具體怎么操作:

我們剛剛說了某個微服務調用不了了要做降級,也就是說,要在調用方做降級(不然那個微服務都down掉了再做降級也沒什么意義了) 比如說我們 user 調用power 那么就在user 做降級

先把hystrix的依賴加入:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>

啟動類加入注解@EnableHystrix 或者@EnableCircuitBreaker(他們之間是一個繼承關系,2個注解所描述的內容是完全一樣的,可能看大家之前都是EnableXXX(比如eureka)這里專門再寫一個EnableHystrix方便大家記吧)

然后在我們的controller上面加入注解@HystrixCommand(fallbackMethod就是我們剛剛說的方法的名字)

@RequestMapping("/feignPower.do") @HystrixCommand(fallbackMethod = "fallbackMethod") public Object feignPower(String name){return powerServiceClient.power(); }

fallbackMethod:

這個R不重要,你看做一個Map就好了, 是我封裝的一個返回值的類。

public Object fallbackMethod(String name){System.out.println(name);return R.error("降級信息");}

這里的這個降級信息具體內容得根據業務需求來, 比如說返回一個默認的查詢信息,亦或是系統維護(因為有可能要暫時關閉某個微服務而吧資源讓給其他服務)等等...

我們在power代碼里面模擬一個異常

@RequestMapping("/power.do") public Object power(String name) throws Exception{Map<String,Object> map = new HashMap<String, Object>();map.put("power1","value");if (name==null)throw new Exception();return map; }

然后啟動服務調用一下看看結果:

我們來測試一下超時:

我們改動一下power的代碼 讓他故意等待一回兒(模擬響應超時)

@RequestMapping("/power.do") public Object power(String name) throws Exception{Map<String,Object> map = new HashMap<String, Object>();map.put("power1","value");Thread.sleep(2000);return map; }

這里我就把返回值內容改一下方便大家看:

可能有些同學有疑問, 我這里什么都沒干, 就讓他休眠了一下 , 怎么就知道我這里超時了呢?

因為hystrix他有默認的超時監聽,當你這個請求默認超過了1秒鐘就會超時 當然,這個可以配置的,至于怎么配置,待會兒我會把一些配置統一列出來

講了這么多, 這個降級到底有什么用呢?

第一, 他可以監聽你的請求有沒有超時,第二,報錯了他這里直接截斷了沒有讓請求一直卡在這里

其實降級還有一個好處, 就是當你的系統馬上迎來大量的并發(雙十一秒殺這種 或者促銷活動)? 這時候如果發現系統馬上承載不了這么大的并發時, 可以考慮先關閉一些不重要的微服務(在降級方法里面返回一個比較友好的信息),吧資源讓給主微服務,總結一下就是

整體資源快不夠了,忍痛將某些服務先關掉,待渡過難關,再開啟回來。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的降级,超时的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。