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

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

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

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

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

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

一、项目修改 订单模块 pom

    org.springframework.cloud
    spring-cloud-starter-netflix-hystrix
    2.2.9.RELEASE
增加 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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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