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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 熔断_Hystrix服务熔断

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

## 熔斷原理

熔斷器,頁腳斷路器,其英文單詞為:Circuit Breaker.

熔斷機制的原理很簡單,像家里的電路熔斷器,如果電路發生短路能立刻熔斷電路,避免發生火災.在分布式系統中應用這一模式之后,服務調用方可以自己進行判斷某些服務反應慢或者存在大量超時的情況時,能夠主動熔斷,防止整個系統被拖垮.

不同于電路熔斷只能斷不能自動重連,Hystrix可以實現彈性容錯,當情況好轉之后,可以自動重連.這就好比魔術師把鴿子變沒了容易,但是真正考驗技術的是如何把小時的鴿子再變回來.

通過斷路的方式,可以將后續請求直接拒絕掉,一段時間之后允許部分請求通過,如果調用成功則回到電路閉合狀態,否則繼續斷開.

![](https://box.kancloud.cn/666092668a29caa8cb6422f98bbecdfb_827x486.png)

## 狀態機三種狀態

1. Closed:關閉狀態(斷路器關閉),所有請求都正常訪問.

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

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

## 配置

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

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

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

## 代碼

~~~

@RestController

@RequestMapping("/user")

@DefaultProperties(defaultFallback = "defaultCallBack")

public class UserController

{

@Autowired

private RestTemplate restTemplate;

@Autowired

private DiscoveryClient discoveryClient;

@GetMapping("/{id}")

@HystrixCommand(commandProperties = {

@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"), //最近請求的次數

@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"), //休眠時間

@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60") //錯誤百分比

})

public String index(@PathVariable("id") Long id)

{

if (id % 2 == 0) {

throw new RuntimeException(""); //模擬請求失敗

}

String url = "http://user-server/user/";

return restTemplate.getForObject(url + id, String.class);

}

public String defaultCallBack()

{

return "服務器壓力很大";

}

}

~~~

### 快速請求幾次,觸發熔斷器:

![](https://box.kancloud.cn/2d3d3f91ef11b11e11e38999f51d612f_1090x696.png)

### 當我們再次請求正常邏輯之后,會快速失敗:

![](https://box.kancloud.cn/f4d1a60f19b692c3b40f8b0fc71272fe_1174x726.png)

總結

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

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