介绍
使用微服务架构实现大型项目的过程中,经常会对一个大而全的系统拆分成多个较小的服务单元,各个服务单元之间通过注册和订阅的方式,了解对方的状态,相互依赖。每一个服务单元运行在一个单独的进程中。各个服务单元在相互调用的过程中,会出现各种各样的不可用情况,如网络不可用,服务单元的进程挂掉了,服务单元内部的实现性能有问题等等。如果高并发高并发的情况下,挂起的服务单元一直占用系统资源不及时释放,就会导致系统资源耗尽,从而导致整个系统出现问题。hystrix的出现,就是为了解决这种问题的,它提供了故障监控。如果出现故障,Hystrix可以帮助系统快速调用一个异常处理模块,快速失败,快速释放系统资源,避免了故障的蔓延,从而避免的系统雪崩的危害。
如何让自己的功能得到Hystrix的支持?
需要完成下面的步骤:
1).添加Hytrix的maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
2).在启动类中添加注解
启动类中需要添加@EnableCircuitBreaker
3).在需要高可用的模块中添加相应的注解和回调函数
@ResponseBody
@GetMapping("/list")
@HystrixCommand(fallbackMethod="listFallBack")
public User[] list(){
System.out.println("list-->"+Thread.currentThread().getId());
User[] list = restTemplate.getForObject("http://spring-cloud-provider/user/list", User[].class);
return list;
}
public User[] listFallBack(){
System.out.println("listFallBack-->"+Thread.currentThread().getId());
return new User[]{};
}
当list函数出现性能问题,执行速度太慢,响应太慢的时候就会直接调用listFallBack函数