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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hystrix之熔断

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

服務熔斷

熔斷原理

熔斷器,也叫斷路器,其英文單詞為:Circuit Breaker

熔斷狀態機3個狀態:

  • Closed:關閉狀態,所有請求都正常訪問。

  • Open:打開狀態,所有請求都會被降級。Hystix會對請求情況計數,當一定時間內失敗請求百分比達到閾值,則觸發熔斷,斷路器會完全打開。默認失敗比例的閾值是50%,請求次數最少不低于20次。

  • Half Open:半開狀態,open狀態不是永久的,打開后會進入休眠時間(默認是5S)。隨后斷路器會自動進入半開狀態。此時會釋放部分請求通過,若這些請求都是健康的,則會完全關閉斷路器,否則繼續保持打開,再次進行休眠計時

動手實踐

為了能夠精確控制請求的成功或失敗,我們在consumer的調用業務中加入一段邏輯:

@GetMapping("{id}") @HystrixCommand public String queryUserById(@PathVariable("id") Long id){if(id == 1){throw new RuntimeException("太忙了");}String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);return user; }

這樣如果參數是id為1,一定失敗,其它情況都成功。(不要忘了清空service-provider中的休眠邏輯)

我們準備兩個請求窗口:

  • 一個請求:http://localhost/consumer/user/1,注定失敗

  • 一個請求:http://localhost/consumer/user/2,肯定成功

當我們瘋狂訪問id為1的請求時(超過20次),就會觸發熔斷。斷路器會斷開,一切請求都會被降級處理。

此時你訪問id為2的請求,會發現返回的也是失敗,而且失敗時間很短,只有幾毫秒左右:

不過,默認的熔斷觸發要求較高,休眠時間窗較短,為了測試方便,我們可以通過配置修改熔斷策略:

circuitBreaker.requestVolumeThreshold=10 circuitBreaker.sleepWindowInMilliseconds=10000 circuitBreaker.errorThresholdPercentage=50

解讀:

  • requestVolumeThreshold:觸發熔斷的最小請求次數,默認20

  • errorThresholdPercentage:觸發熔斷的失敗請求最小占比,默認50%

  • sleepWindowInMilliseconds:休眠時長,默認是5000毫秒

總結

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

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