前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >SpringCloud之Feign 负载均衡请求超时时间

SpringCloud之Feign 负载均衡请求超时时间

作者头像
Arebirth
发布2020-06-19 15:59:33
发布2020-06-19 15:59:33
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

版本声明:

 SpringCloud:Greenwich.SR4

   SpringBoot:2.1.9.RELEASE


Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,那么会相应的报错。

但是在实际的业务中,我们的服务可能因为特别原因(网络、处理压力大等)导致相应速度超过1秒钟,那么就会报错,

下面我们就来处理如何手动配置Feigin的负载均衡超时等参数

全局配置

SpringCloud负载均衡底层用的就是Ribbon

代码语言:javascript
代码运行次数:0
复制
#--------------Feign负载均衡配置 配置全局超时时间
ribbon:
  ConnectTimeout: 5000 #请求连接的超时时间,默认时间为1秒
  ReadTimeout: 5000 #请求处理的超时时间

5秒没有响应成功就报如下错误(真实情况下,会比5s多一些,因为发送请求也需要时间的,模拟超时可以在请求处理的方法上用Thread.sleep()设置休眠时间超过5s)


局部配置(就是指定提供者)

代码语言:javascript
代码运行次数:0
复制
#--------------Feign负载均衡配置 局部配置超时时间等
feign-product-provider: #指定配置的服务名称
  ribbon:
    OkToRetryOnAllOperations: true # 对所有请求都进行重试
    MaxAutoRetries: 2 # 对当前实例的重试次数
    MaxAutoRetriesNextServer: 0 # 切换实例的重试次数(集群状态下,其它对其它实例服务重试的次数)
    ConnectTimeout: 3000 # 请求连接的超时时间
    ReadTimeout: 3000 # 请求处理的超时时间

上述提到的服务名称如下配置

代码语言:javascript
代码运行次数:0
复制
spring:
  application:
    name: feign-product-provider # 随意设置

执行的代码

输出结果


不是一共重试两次吗?这里边就涉及到了一个公式

代码语言:javascript
代码运行次数:0
复制
 共重试次数 = (MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries * MaxAutoRetiresNextServer)
      = 2 + 0 + (2 * 0)
      = 2
在加上我们手动请求一次那就是:2 + 1 = 3次



公式很重要!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版本声明:
  • Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,那么会相应的报错。
  • 但是在实际的业务中,我们的服务可能因为特别原因(网络、处理压力大等)导致相应速度超过1秒钟,那么就会报错,
  • 下面我们就来处理如何手动配置Feigin的负载均衡超时等参数
  • 全局配置
    • 5秒没有响应成功就报如下错误(真实情况下,会比5s多一些,因为发送请求也需要时间的,模拟超时可以在请求处理的方法上用Thread.sleep()设置休眠时间超过5s)
  • 局部配置(就是指定提供者)
    • 上述提到的服务名称如下配置
    • 执行的代码
    • 输出结果
    • 不是一共重试两次吗?这里边就涉及到了一个公式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档