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的超时时间为准。