目录
第一种: failed and no fallback available
第二种: timed-out and no fallback
2.1 业务场景: A服务一切正常 但是B服务显示timeout
2.2 改进三种参数 feign hystrix ribbon
第一种: failed and no fallback available
1 服务挂掉了
2 服务没有开启
3 注册中心没注册进去
-> ps: 直接调用的接口 通过网关转发失败 会报503
4 高并发下的服务熔断了
第二种: timed-out and no fallback
2.1 业务场景: A服务一切正常 但是B服务显示timeout
ps: 如果没有报错, 只显示回调callBack 请先注释掉fallback后 查看报错即可
2.2 改进三种参数 feign hystrix ribbon
yml配置如下:
->2.2.1 feign参数配置
feign:
hystrix:
enabled: true #是否开启熔断策略
client:
config:
default:
connectTimeout: 40000
readTimeout: 40000
->2.2.2 hystrix的超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
timeoutInMilliseconds: 15000 #设置调用者等待命令执行的超时限制,超过此时间,HystrixCommand被标记为TIMEOUT,并执行回退逻辑
circuitBreaker:
requestVolumeThreshold: 200 #设置在一个滚动窗口中,打开断路器的最少请求数
sleepWindowInMilliseconds: 5000 #设置在回路被打开,拒绝请求到再次尝试请求并决定回路是否继续打开的时间
errorThresholdPercentage: 50 #设置打开回路并启动回退逻辑的错误比率
threadpool:
default:
coreSize: 200 #核心线程数
maxQueueSize: 200 #最大队列数
queueSizeRejectionThreshold: 160 #队列拒绝阈值设置
-> 2.2.3 ribbon 重试机制配置
ribbon:
ReadTimeout: 10000 #读取(接收响应)超时时间
ConnectTimeout: 3000 #链接超时时间(服务与服务之间建立网络连接的超时时间)
MaxAutoRetries: 0 #同一台实例最大重试次数,不包括首次调用,默认0
MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用 默认1
OkToRetryOnAllOperations: false #是否所有操作都重试, 默认只对GET重试(false)
详细解释两个参数
针对maxAutoRetries(默认0不重试)重试次数
和MaxAutoRetriesNextServer(默认1)切换服务的次数
可以计算总请求次数 (重试次数+1)*(切换服务的次数+1)
上面这种配置(1+1)*(1+1)=4次
-> 2.2.4 注意事项
三个配置 yml的顶格,直接复制, 然后进行测试即可
-> 2.2.5 整体配置yml(复制即可)
# pzy最新升级版 feign配置远程调用超时时间
# 细节请看csdn博客
feign:
hystrix:
enabled: true
client:
config:
default:
connectTimeout: 40000
readTimeout: 40000
#pzy最新升级版 hystrix的超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
timeoutInMilliseconds: 15000
circuitBreaker:
requestVolumeThreshold: 200
sleepWindowInMilliseconds: 5000
errorThresholdPercentage: 50
threadpool:
default:
coreSize: 200
maxQueueSize: 200
queueSizeRejectionThreshold: 160
# pzy最新升级版 feign配置远程调用超时时间
ribbon:
ReadTimeout: 12000
ConnectTimeout: 3000
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 1
OkToRetryOnAllOperations: false
补充: feign的优势在哪, 为何会替代restTemplate
Feign是声明式REST客户端,它使得Web服务客户端变得更加容易。Feign具有以下优势:
简单易用:Feign通过提供注解的方式,让开发者可以轻松地定义REST服务的接口,不需要显式地编写HTTP请求和响应处理代码。
自动化的编码:Feign框架底层使用了动态代理技术,可以自动将注解转换成HTTP请求,降低了开发者的编码成本。
内置负载均衡:与Ribbon一样,Feign也内置了负载均衡的功能,可以自动地将请求发送到多个服务实例中。
易于集成:Feign与Spring Cloud集成非常紧密,可以很方便地与其他Spring Cloud组件集成,如Eureka、Hystrix等。
支持异步请求:Feign支持异步请求,可以提高系统的并发能力和吞吐量。