微服务开发架构——Spring Cloud常见问题与总结<二>Hystrix/Feign 整合Hystrix后首次请求失败

原创
2017/10/30 13:50
阅读数 839

个人GitHub地址:https://github.com/leebingbin/

    在使用Spring Cloud的过程中,难免会遇到一些问题。所以对Spring Cloud的常用问题做一些总结。

    关于“Eureka常见问题”可以参考,我之前的文章《微服务开发架构——Spring Cloud常见问题与总结<一>Eureka常见问题》:https://my.oschina.net/u/3375733/blog/1555725

二、Hystrix/Feign 整合Hystrix后首次请求失败

    在某些场景下,Feign 或 Ribbon 整合 Hystrix 后,会出现首次调用失败的问题。

2.1 原因分析

    Hystrix 默认的超时时间是1秒,如果在1秒内得不到响应,就会进入 fallback 逻辑。由于 Spring 的懒加载机制,首次请求往往会比较慢,因此在某些机器(特别是配置低的机子[Tips:为什么还要用旧瓶装新酒呢?软件都更新了,硬件也要跟上啊!^_^])上,首次请求需要的时间可能就会大于1秒。

2.2 解决方案

    有很多方式解决该问题:

    1) 方法一:延长 Hystrix 的超时时间,示例如下

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:5000

    该配置让 Hystrix 的超时时间改为5秒。

    2) 方法二:禁用 Hystrix 的超时,示例如下

hystrix.command.default.execution.timeout.enabled: false

    3) 方法三:对于 Feign , 还可以为 Feign 禁用 Hystrix , 示例如下

feign.hystrix.enabled: false

    这样即可为 Feign 全局禁用 Hystrix 支持。但该方式比较极端,一般不建议使用。

 

 

本文为博主原创文章,转载请注明出处!

https://my.oschina.net/u/3375733/blog/

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部