文章目录
- 1. 概述
- 2. 短路器
- 3. SpringFeign 使用 Hystrix断路器
- 3.1 工程实例
- 3.2 修改 Fegin 模块
- 3.3 测试运行
- 参考文献
1. 概述
微服务架构中服务之间互相调用,单个服务通常会集群部署,由于网络等原因,服务不能保证 100% 可用,如果单个服务出现问题会出现请求的堆积,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。
2. 短路器
一个请求需要调用多个服务。
如果一个服务出现故障,如服务A故障,短路会被打开,然后走 FallBack 之后的方法。
3. SpringFeign 使用 Hystrix断路器
Feign是自带断路器,只需要配置一下。
3.1 工程实例
整个工程可以参考我的这篇博文:。
3.2 修改 Fegin 模块
添加下面的 配置:
feign.hystrix.enabled=true
添加 fallback 的方法,fallback = HelloWorldHystrix.class:
/**
* @author syrdbt
* @date 2019-10-12
*/
@FeignClient(name = "service-hi", fallback = HelloWorldHystrix.class)
public interface HelloFeign {
@RequestMapping(value="/hello")
String hello();
}
HelloWorldHystrix.java如下所示:
/**
* @author syrdbt
* @date 2019-10-17
*/
@Component
public class HelloWorldHystrix implements HelloFeign {
@Override
public String hello() {
return "sorry";
}
}
3.3 测试运行
启动注册中心和服务,访问注册中心 ,注册的实例如下图所示:
访问 http://localhost:8765/hello,如下图所示:
关闭 Hi-Service 服务:
访问 http://localhost:8765/hello,如下图所示:
参考文献