zoukankan      html  css  js  c++  java
  • SpringCloud之Feign 负载均衡请求超时时间

    版本声明:

      SpringCloud:Greenwich.SR4

       SpringBoot:2.1.9.RELEASE


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

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

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

    全局配置

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

    #--------------Feign负载均衡配置 配置全局超时时间
    ribbon:
      ConnectTimeout: 5000 #请求连接的超时时间,默认时间为1秒
      ReadTimeout: 5000 #请求处理的超时时间

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


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

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

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

    spring:
      application:
        name: feign-product-provider # 随意设置

    执行的代码

    输出结果


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

     共重试次数 = (MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries * MaxAutoRetiresNextServer)
          = 2 + 0 + (2 * 0)
          = 2
    在加上我们手动请求一次那就是:2 + 1 = 3次



    公式很重要!
  • 相关阅读:
    系统架构设计师考试大纲
    常用数据结构及复杂度( 转)
    八种主流NoSQL数据库系统对比(转)
    C# Redis Server分布式缓存编程(二)(转)
    C# Redis Server分布式缓存编程(一)(转)
    js去掉字符串前后空格的五种方法(转)
    给力分享新的ORM => Dapper( 转)
    我所经历的“余额宝”的那些故事(转)
    在PowerDesigner中设计物理模型1——表和主外键(转)
    Object.keys(obj)
  • 原文地址:https://www.cnblogs.com/arebirth/p/springcloudfeignloadbalancetime.html
Copyright © 2011-2022 走看看