springCloud2020.0.1或以上 版本Feign使用Hystrix无效问题

本文介绍了SpringCloud 2020.0.1版本中移除NetflixOSS组件的情况,包括Eureka、Hystrix等。在新版本中,启用服务降级需配置`feign.circuitbreaker.enabled=true`。当配置不生效时,需添加Hystrix依赖。同时,详细解析了feign、ribbon和hystrix之间的超时配置关系,强调了配置超时时间的注意事项。
摘要由CSDN通过智能技术生成

version版本

spring boot 2.4.3
spring cloud 2020.0.1

描述

基础上述version的服务间的调用以及熔断

介绍

Netflix OSS 被移除的原因

更新版本没有什么大惊小怪的,但是本次更新却正式开启了Spring Cloud Netflix体系的终结进程。Netflix公司是目前微服务落地中最成功的公司。它开源了诸如Eureka、Hystrix、Zuul、Feign、Ribbon等等广大开发者所知微服务套件,统称为Netflix OSS。在当时Netflix OSS成为微服务组件上事实的标准。但是微服务兴起不久,也就是在 2018 年前后Netflix公司宣布其核心组件Hystrix、Ribbon、Zuul、Eureka等进入维护状态,不再进行新特性开发,只修 BUG。

这直接影响了Spring Cloud项目的发展路线,Spring 官方不得不采取了应对措施,在 2019 年的在 SpringOne 2019 大会中,Spring Cloud宣布 Spring Cloud Netflix 项目进入维护模式,并在 2020 年移除相关的Netflix OSS组件。

哪些 Netflix 被移除了

如今Netflix OSS在Spring Cloud体系的时代已经落幕了。在本次的更新中以下组件被从Spring Cloud Netflix中移除了:

在这里插入图片描述
在这里插入图片描述
添加配置开启服务降级

开启hystrix

这是由于feign中没有开启hystrix,于是我们按照网上的教程添加配置进行开启

feign.hystrix.enabled=true

结果发现没有任何用处,这是因为feign.hystrix.enabled在springcloud2020.0.1已经找不到了,对应新的控制装配的是

feign.circuitbreaker.enabled=true

如果配置还是无法生效

添加如下依赖,如果没有该依赖配置无法生效

  <!--hystrix-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
#hystrix熔断超时配置
hystrix:
  command:
    default:
      execution:
        #开启超时配置(默认为开启)
        timeout:
          enabled: true
        #设置超时时间
        isolation:
          thread:
            timeoutInMilliseconds: 4000

feign与ribbon以及hystrix三者之间超时的关系

影响到feign接口超时时间的主要有三类配置:feign、ribbon和hystrix。
feign的配置:

feign:
	client:
		config:
			default:	// 这个代表 服务,default为任意服务,可以指定服务名来指定调用该服务时的超时时间
				connectTimeout: 毫秒时间,建立连接的超时时间,一般只在发现服务时用到
				readTimeout: 毫秒时间 ,接口请求的超时时间

ribbon的配置:

ribbon:
	ReadTimeout: 毫秒时间, 同feign的
	ConnectTimeout:毫秒时间 , 同feign的

hystrix:

hystrix:
  command:
    default:	// 这个代表接口,default为任意接口, 可以配置为指定接口(Feign接口类名#方法名(方法参数类型)),如:FeignXXClient#testMethod(String, String)
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 毫秒时间

feign和ribbon的配置二选一即可(如果都配置了,会以feign的配置为准),因为这两个配置都相当于是ribbon的配置,不同点在于feign的配置在ribbon的基础上做了扩展,可以支持配置服务级别的超时时间,并且如果feignClient中使用了url,超时时间也可以生效(ribbon当指定了url时是不会执行到的,因为指定了url就不需要走ribbon的负载均衡逻辑)。
hystrix配置的超时时间理论上应该要比
feign和ribbon的要大,因为feign和ribbon可以配置失败重试。当然最终的超时时间是以feign(或ribbon)和hystrix中最小时间为准。所以在单独设置某个接口的超时时间时,如果设置的超时时间比feign的要小,则可以生效。如果设置的时间比feign的要大,则会以feign的超时时间为准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值