Hystrix 是国外知名的视频网站 Netflix 所开源的非常流行的高 可用架构框架。Hystrix 能够完美的解决分布式系统架构中打造高可用服务面临的一系列技术难题。
Hystrix “豪猪”,具有自我保护的能力。hystrix 通过如下机制来解决雪崩效应问题。
在微服务架构中,我们把每个业务都拆成了单个服务模块,然后 当有业务需求时,服务间可互相调用,但是,由于网络原因或者其他 一些因素,有可能出现服务不可用的情况,当某个服务出现问题时, 其他服务如果继续调用这个服务,就有可能出现线程阻塞,但如果同 时有大量的请求,就会造成线程资源被用完,这样就可能会导致服务 瘫痪,由于服务间会相互调用,很容易造成蝴蝶效应导致整个系统宕 掉。因此,就有人提出来断路器来解决这一问题。
Hystrix 环境搭建
1、引入pom依赖
<!-- hystrix 断路器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2、引入appliaction.yml配置开启 Hystrix 断路器
feign:
hystrix:
enabled: true
#### hystrix禁止服务超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: false
3、启动入口添加注解
@EnableHystrix
4、服务降级处理(HystrixCommand [fallbackMethod(服务 降级执行)])
@HystrixCommand(fallbackMethod = "orderToUserInfoFallback")
@GetMapping("/getUserInfo")
public ResponseBase orderToUserInfoHystrix() {
System.out.println("orderToUserInfo:" + "当前线程池名称:" + Thread.currentThread().getName());
return memberServiceFeigin.getUserInfo();
}
@RequestMapping("/orderToUserInfoFallback")
public ResponseBase orderToUserInfoFallback() {
return setResultError("系统错误!!!!");
}