- 入门概念
- Hystrix 简介
- Hystrix 状态
- Hystrix 有什么用?
- 入门案例
- 方式1 直接实现Feign 客户端接口
- 方式2 实现FallbackFactory 接口
服务雪崩效应及容错方案
可以看下文档,了解下熔断降级的相关概念和重要性。
github
Hystrix 状态Hystrix 不再处于积极开发阶段,目前处于维护模式。
Hystrix(版本 1.5.18)足够稳定,可以满足 Netflix 对我们现有应用程序的需求。
可以从版本发布看到,自从2018年来,已经停止更新了,但是目前还是可用,而且Spring Cloud Open Feign 也是从2020.X 版本才移除这些组件,其他类似Sentinel 限流组件的使用方式也差不多,所以这里还是看下Hystrix 怎么使用的。
Hystrix 旨在执行以下操作:
- 通过第三方客户端库访问(通常通过网络)的依赖项,提供对延迟和故障的保护和控制。
- 解决复杂分布式系统中的级联故障。
- 快速失败并快速恢复。
- 在可能的情况下回退并优雅地降级。
- 实现近乎实时的监控、警报和操作控制。
低版本的 Open Feign默认引入了Hystrix包,主需要配置就可以开启了:
feign:
hystrix:
enabled: true
在配置Feign 客户端配置Hystrix时,可以指定fallback或者fallbackFactory。
直接写一个类实现Feign 客户端接口,重写方法,这些方法在发生熔断时,会返回方法中的返回值给客户端。
直接直接返回了Null ,实际开发中,应该封装统一的熔断结果集。
@Component
public class HystrixOrderFeign implements OrderFeign {
@Override
public List insertOrder(Long accountId, String commodityCode, Long count, Long money) {
return null;
}
@Override
public Order post(Order order) {
return null;
}
}
然后在@FeignClient中指定fallback属性为上面的类即可。
@FeignClient(name = "order-service", fallback = HystrixOrderFeign.class)方式2 实现FallbackFactory 接口
还通过实现FallbackFactory接口,指定泛型为Fegn 接口,然后实现其方法。使用工厂类,可以获取到当前发生的异常信息。
@Component public class OrderFeignFallbackFactory implements FallbackFactory{ @Override public OrderFeign create(Throwable throwable) { return new OrderFeign() { @Override public List insertOrder(Long accountId, String commodityCode, Long count, Long money) { return null; } @Override public Order post(Order order) { return null; } }; } }
然后配置下fallbackFactory属性就可以了。
@FeignClient(name = "order-service", configuration = {BBB.class}, fallbackFactory = OrderFeignFallbackFactory.class)



