栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Cloud Open Feign系列【12】Feign 整合Hystrix实现熔断降级

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Cloud Open Feign系列【12】Feign 整合Hystrix实现熔断降级

文章目录
  • 入门概念
  • Hystrix 简介
    • Hystrix 状态
    • Hystrix 有什么用?
  • 入门案例
    • 方式1 直接实现Feign 客户端接口
    • 方式2 实现FallbackFactory 接口

入门概念

服务雪崩效应及容错方案

可以看下文档,了解下熔断降级的相关概念和重要性。

Hystrix 简介

github

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 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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号