日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
SpringCloud系列之Hystrix熔斷器

什么是熔斷器?

熔斷器本身是一個開關設置,當某個服務單元發(fā)生故障之后,通過熔斷器的故障監(jiān)控(類似保險絲),向調用方返回一個服務預期的,可處理的備選相應(fallBack),而不是長時間的等待或者拋出調用方法無法處理的異常。這樣就保證了服務調用方的線程不會長時間,不必要的占用,從而避免了故障在分布式系統(tǒng)中的蔓延,乃至雪崩。

Hystrix的目標

  1. 通過第三方客戶端訪問的依賴項(通常是通過網絡)的延遲和故障進行保護和控制。
  2. 在復雜的分布式系統(tǒng)中防止級聯故障。
  3. 快速失敗,快速恢復。
  4. 回退,盡可能優(yōu)雅地降級。
  5. 啟用實時監(jiān)控、報警和操作控制。

Hystrix設計原理

  1. 防止任何單個依賴項耗盡整個容器用戶線程
  2. 甩掉包袱,快速失敗而不是排隊。
  3. 在任何可行的地方提供回退,以保護用戶不受失敗的影響。
  4. 使用隔離技術來限制任何一個依賴項的影響。
  5. 通過實時的度量、監(jiān)視和報警來優(yōu)化發(fā)現時間。
  6. 通過配置的低延遲傳播來優(yōu)化恢復時間。
  7. 支持對Hystrix的大多數方面的動態(tài)屬性更改,允許使用低延遲反饋循環(huán)進行實時操作修改。
  8. 避免在整個客戶端執(zhí)行中出現故障,而不僅僅是在網絡流量中。

Hystrix斷路器Demo

引入jar包;


org.springframework.cloud
spring-cloud-starter-hystrix
1.4.6.RELEASE

在啟動類上開啟斷路器。

@SpringBootApplication
@EnableEurekaClient // 表示是eureka的客戶端
@EnableFeignClients
@EnableDiscoveryClient // 提供服務發(fā)現
@EnableCircuitBreaker // 開啟hystrix斷路器
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
/**
* 遠程調用
*/
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
/**
* feign的日志通過代碼的方式(也可以通過yml配置文件的方式)
*/
@Bean
public Logger.Level feignLogger() {
return Logger.Level.FULL;
}
}

單個回滾方法:

/**
* Hystrix實例:單個回滾
* @author Big.Hu
*/
@RestController
public class UserController {
/**
* 熔斷機制
* 異常后執(zhí)行getFeignFallback()方法
*/
@HystrixCommand(fallbackMethod = "getFeignFallback")
@GetMapping("feign/{id}")
public String getFeign(@PathVariable("id") int id) {
int i = 1 / 0; // 異常
return userFeign.getOrder1(id);
}
private String getFeignFallback(@PathVariable("id") int id) {
System.out.println("斷路器生效。");
return "提示:網絡繁忙,請稍候再試。。" + id;
}
}

訪問請求:localhost:7001/feign/555。

斷路器生效

控制臺:

全局的回滾方法:

/**
* Hystrix實例:全局回滾
* @author Big.Hu
*/
@RestController
@DefaultProperties(defaultFallback = "defaultFallback")
public class UserController {

@GetMapping("feign/{id}")
public String getFeign(@PathVariable("id") int id) {
int i = 1 / 0; // 異常
return userFeign.getOrder1(id);
}

private String defaultFallback() {
System.out.println("全局斷路器生效。");
return "提示:服務器繁忙,請稍候再試。。";
}
}

訪問請求:localhost:7001/feign/555。

全局斷路器生效

控制臺:

控制臺


當前標題:SpringCloud系列之Hystrix熔斷器
網頁地址:http://m.5511xx.com/article/cdgsedc.html