SpringCloud微服务断路器03

  • 断路器简介

断路器本身是电路上的一种过载保护装置,当线路中有电器发生短路时,它能够及时的切断故障电路以防止严重后果发生
以下是软件系统中的熔断机制

在这里插入图片描述

断路器状态

  • 完全打开
    一定时间内 达到多少次C无法调用 并且多次检测C没有恢复迹象 断路器完全打开
  • 半开
    一定时间内 达到多少次C无法调用 短时间内 C有恢复迹象 断路器会将部分请求发送给C 部分请求通过断路器返回回调 当部分请求完成能正常调用
    可能会关闭断路器
  • 关闭
    如果C服务一直处于正常状态 B都可以正常调用 断路器处于关闭状态

hystrix依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
  • main类添加@EnableCircuitBreaker

调用方熔断

@RequestMapping("invokeServiceBalance")
@HystrixCommand(fallbackMethod="invokeServiceBalanceFallBack") 
	public String invokeServiceBalance() {
	String uuid=restTemplate.getForObject("http://IDSERVER/getId",String.class);
	return uuid;
}
public String invokeServiceBalanceFallBack() {
	return "NOUUID";
}

启用断路器(依赖同ribbon)
feign: hystrix: enabled: true

添加接口实现类 作为断路器

@FeignClient(name="idserver",fallback=TestClientFallback.class)
public interface TestClient {
	@RequestMapping(method = RequestMethod.GET, value = "/getUser/{id}")
	public User getId(@PathVariable("id") String id) ;
}
class TestClientFallback implements TestClient{
	@Override
	public User getId(String id) {
		User user=new User();
		return user;
	}
}
  • 添加监控依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

访问监控数据

访问 http://localhost:端口//hystrix.stream

打印数据

data: {"type":"HystrixCommand","name":"invokeServiceBalance","group":"TestController","currentTime":1507519121493,"isCircuitBreakerOpen":false,"

* 注意:注: isCircuitBreakerOpen表示是否打开断路器
*

添加依赖

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

主类添加

@EnableHystrixDashboard

访问地址:http://localhost:端口/hystrix

猜你喜欢

转载自blog.csdn.net/weixin_43458790/article/details/84777764