Spring Cloud(2020.0.3) | 从入门到入土 - 15. Feign 整合 Hystrix

之前我们将 Hystrix 引入到了商品模块,但是如果这样去写,会和商品模块的业务代码耦合度太高,不利于维护,所以需要解耦。

我们这里是整合 Feign 与 Hystrix,所以需要将 Hystrix 引入到订单模块中去。

一、项目修改

订单模块

pom

<!-- hystrix 断路器 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    <version>2.2.9.RELEASE</version>
</dependency>

增加 feign 远程调用的具体实现

之前我们的 feign 远程调用是一个接口,现在我们给这个接口弄一个实现类。

这里实现类其实就是熔断降级要走的方法,写好之后,再回到 feign 中进行配置~~~

yml

yml 中我们需要开启 feign 对 Hystrix 的支持。

feign: 
  client:
    config:
      default: # 这里就是指的所有被加载的默认FeignClient实现的服务配置都生效
        connectTimeout: 1000
        readTimeout: 2000
  circuitbreaker:
    enabled: true

之前版本添加支持是通过

feign: 

  hystrix: 

    enabled: true

这样的形式进行添加的,但是现在改成了 feign.circuitbreaker.enabled ~~

商品模块

商品模块我们当时弄了三个,现在自己找一个没有引入 Hystrix 的模块进行修改。

要增加的代码很简单~~~,这里休眠 2 秒。

二、测试 1

我们将之前数据库中的数据清除掉,然后启动 Eureka Server 集群,以及两个业务模块。

可以看到,调用的话是正常的,返回 code 值 200,我们来看看日志。

可以看到,Feign 调用商品模块的时候,服务被熔断了~~~(这里是因为 Hystrix 导致我们的服务被熔断,可以看请求时间。)

三、测试 2

我们在订单模块中增加 Hystrix 超时时间

这里要注意一点,一定要将 Hystrix 的超时时间超过上面 feign 的超时时间。

再来测试~~~

这个和上面测试的结果很类似,请求返回的 code 也是 200,再来看日志。

日志也是一样。

但是,细心的人可能已经发现问题了。我们两次测试的结果虽然效果是一样的,但是!!!超时机制的拦截缺不一样。

第一次测试的超时是因为 Hystrix 导致,因为 Hystrix 的超时默认是 1 秒,而 Feign 是 2 秒(要看读取时间),我们程序响应需要 2 秒,所以这里 Hystrix 就已经帮我们做服务熔断降级处理了。

而第二次测试,我们在订单模块中增加了 Hystrix 的超时时间配置,将之前的 1 秒提高到了 3 秒,其他的没变,但是我们可以看响应时间,是 2.08 秒,也就是说,我们这次是因为超过了 Feign 的读取超时时间,所以 Feign 将服务熔断降级了。

四、Feign 整合 Hystrix 后超时机制

通过上面的两次测试,可以看出第二次测试结果,业务请求根本没有过 Hystrix。

所以这里是强制要求,openFeign 的超时时间一定要大于 Hystrix,否则我们配置的 Hystrix 根本没有用。


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

最近网站已经做好,并且已经上线,欢迎各位留言~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值