【OpenFeign】 集成 Hystrix 基础
【OpenFeign】 集成 Hystrix 基础
Metadata
title: 【OpenFeign】 集成 Hystrix 基础
date: 2023-01-02 19:15
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/OpenFeign/生态/Hystrix
categories:
- OpenFeign
keywords:
- OpenFeign
description: 【OpenFeign】 集成 Hystrix 基础
【OpenFeign】 集成 Hystrix 基础
可以看下文档,了解下熔断降级的相关概念和重要性。
Hystrix 状态
Hystrix 不再处于积极开发阶段,目前处于维护模式。
Hystrix(版本 1.5.18)足够稳定,可以满足 Netflix 对我们现有应用程序的需求。
可以从版本发布看到,自从 2018 年来,已经停止更新了,但是目前还是可用,而且 Spring Cloud Open Feign 也是从 2020.X 版本才移除这些组件,其他类似 Sentinel 限流组件的使用方式也差不多,所以这里还是看下 Hystrix 怎么使用的。
Hystrix 有什么用?
Hystrix 旨在执行以下操作:
- 通过第三方客户端库访问(通常通过网络)的依赖项,提供对延迟和故障的保护和控制。
- 解决复杂分布式系统中的级联故障。
- 快速失败并快速恢复。
- 在可能的情况下回退并优雅地降级。
- 实现近乎实时的监控、警报和操作控制。
低版本的 Open Feign
默认引入了Hystrix
包,主需要配置就可以开启了:
feign:
hystrix:
enabled: true
在配置 Feign 客户端配置Hystrix
时,可以指定fallback
或者fallbackFactory
。
方式 1 直接实现 Feign 客户端接口
直接写一个类实现 Feign 客户端接口,重写方法,这些方法在发生熔断时,会返回方法中的返回值给客户端。
直接直接返回了 Null ,实际开发中,应该封装统一的熔断结果集。
@Component
public class HystrixOrderFeign implements OrderFeign {
@Override
public List<Order> 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<OrderFeign> {
@Override
public OrderFeign create(Throwable throwable) {
return new OrderFeign() {
@Override
public List<Order> 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)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论