自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringCloud系列之Hystrix熔斷器

開(kāi)發(fā) 架構(gòu)
熔斷器本身是一個(gè)開(kāi)關(guān)設(shè)置,當(dāng)某個(gè)服務(wù)單元發(fā)生故障之后,通過(guò)熔斷器的故障監(jiān)控(類(lèi)似保險(xiǎn)絲),向調(diào)用方返回一個(gè)服務(wù)預(yù)期的,可處理的備選相應(yīng)(fallBack)。

什么是熔斷器?

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

Hystrix的目標(biāo)

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

Hystrix設(shè)計(jì)原理

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

Hystrix斷路器Demo

引入jar包;

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>

在啟動(dòng)類(lèi)上開(kāi)啟斷路器。

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

單個(gè)回滾方法:

/**
* Hystrix實(shí)例:?jiǎn)蝹€(gè)回滾
* @author Big.Hu
*/
@RestController
public class UserController {
/**
* 熔斷機(jī)制
* 異常后執(zhí)行g(shù)etFeignFallback()方法
*/
@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 "提示:網(wǎng)絡(luò)繁忙,請(qǐng)稍候再試。。" + id;
}
}

訪(fǎng)問(wèn)請(qǐng)求:localhost:7001/feign/555。

斷路器生效

控制臺(tái):

全局的回滾方法:

/**
* Hystrix實(shí)例:全局回滾
* @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("全局?jǐn)嗦菲魃А?);
return "提示:服務(wù)器繁忙,請(qǐng)稍候再試。。";
}
}

訪(fǎng)問(wèn)請(qǐng)求:localhost:7001/feign/555。

全局?jǐn)嗦菲魃?/p>

控制臺(tái):

控制臺(tái)

責(zé)任編輯:姜華
相關(guān)推薦

2021-11-25 09:55:47

Golang熔斷器語(yǔ)言

2014-08-14 10:10:34

設(shè)計(jì)模式熔斷器

2023-08-28 08:00:45

2021-07-02 08:20:53

SpringCloudHystrix Tur監(jiān)控

2021-06-30 07:34:21

SpringCloudHystrix 監(jiān)控

2021-09-06 11:34:47

架構(gòu)微服務(wù)Hystrix

2023-02-03 15:16:42

SpringHystrix

2022-01-17 10:55:50

微服務(wù)API網(wǎng)關(guān)

2020-07-28 08:32:57

微服務(wù)API網(wǎng)關(guān)熔斷

2018-04-17 10:31:09

微服務(wù)架構(gòu)Web

2022-05-13 08:23:07

Zuul微服務(wù)Zuul過(guò)濾器

2023-09-27 18:02:31

2017-04-03 21:52:30

隔離線(xiàn)程池分布式

2025-03-13 00:55:00

微服務(wù)架構(gòu)系統(tǒng)

2021-06-22 15:27:13

設(shè)計(jì)模式迭代器模式Java

2021-08-26 11:52:32

FeignWeb服務(wù)

2019-05-14 13:59:52

Flask服務(wù)器部署

2021-03-26 06:01:45

日志MongoDB存儲(chǔ)

2025-04-03 10:04:53

服務(wù)降級(jí)分布式系統(tǒng)系統(tǒng)

2022-07-04 08:14:24

架構(gòu)演變Tomcat容器架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)