Fegin+Sentinel 解决服务调用首次调用失败问题

本文探讨了Fegin与Sentinel集成后遇到的首次调用失败问题,分析了原因——首次请求因Spring的懒加载机制响应慢超过默认1秒的Hystrix超时。提出三种解决方案:延长Hystrix超时时间、禁用Hystrix超时、禁用feign的Hystrix。同时,针对Fegin+Sentinel的情况,指出当返回时间大于Ribbon超时时间会触发问题,解决方案是增加Ribbon配置或调整feign配置。
摘要由CSDN通过智能技术生成

网上常见的是Fegin和Hystrix集成后,容易重现首次调用失败的问题,而我们是Fegin+Sentinel集成后导致的

Fegin和Hystrix集成后,造成该问题的原因

Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。而首次请求往往会比较慢(因为Spring的懒加载机制,要实例化一些类),这个响应时间可能就大于1秒

解决方案有三种

方法一
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000
该配置是让Hystrix的超时时间改为5秒

方法二
hystrix.command.default.execution.timeout.enabled: false
该配置,用于禁用Hystrix的超时时间

方法三
feign.hystrix.enabled: false
该配置,用于索性禁用feign的hystrix。该做法除非一些特殊场景,不推荐使用

Fegin和Sentinel集成后,造成首次请求失败的原因

当服务的返回时间大于ribbon的超时时间,会触发重试或断开触发 Fallback,超时时间默认1s
解决问题:在application.yml中新增ribbon配置,配置过后,首次请求失败问题就解决了


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值