`

Spring Cloud各组件超时总结

 
阅读更多

Ribbon的超时

  • 全局设置:
    ribbon:
        ReadTimeout: 60000
        ConnectTimeout: 60000
     
  • 局部设置:
  • service-id:
        ribbon:
        ReadTimeout:1000 
        ConnectTimeout:1000
     其中, service-id 是Ribbon所使用的虚拟主机名,一般和Eureka Server上注册的服务名称一致,即:与 spring.application.name 一致。

    Feign的超时

    从Spring Cloud Edgware开始,Feign支持使用属性配置超时:

    feign: 
        client:config:
            feignName:
                connectTimeout:5000
                readTimeout:5000
     对于老版本,可以写个 feign.Request.Options ,参考: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions 的写法即可。

     

    RestTemplate的超时

    一些时侯,我们可能使用了RestTemplate,例如

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate () 
    {
      return new RestTemplate ();
    }
     此时,超时可使用如下方式设置:
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate () 
    {
    SimpleClientHttpRequestFactory simpleClientHttpRequestFactory  = new SimpleClientHttpRequestFactory ();
    simpleClientHttpRequestFactory.setConnectTimeout(1000);
    simpleClientHttpRequestFactory.setReadTimeout(1000);
      return new RestTemplate(simpleClientHttpRequestFactory);
    }
     

     

    Zuul的超时

    Zuul的超时比较复杂,因为Zuul整合了Ribbon、Hystrix。下面分两种情况讨论:

    • 如果Zuul的路由使用了Ribbon 
      那么:Zuul的超时则与Ribbon、Hystrix相关,此时Zuul的超时可以配置类似如下:
      hystrix:
          command:
              default:
                  execution:
                      isolation:
                          thread:
                              timeoutInMilliseconds:1000
                              ribbon:
                                  ReadTimeout:1000
                                  ConnectTimeout:1000
       代码解析:此种情况下,Zuul转发所使用的过滤器是 org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter ,在这个过滤器中,整合了Hystrix以及Ribbon。
      • 如果Zuul的路由未使用Ribbon 
        例如:Zuul的路由配置如下
        zuul:
            routes:
            user-route:      # 该配置方式中,user-route只是给路由一个名称,可以任意起名。
             url:http://localhost:8000/  # 指定的url   
             path: /user/**      # url对应的路径。
         那么,此时Zuul的超时只与如下两个配置有关:
        zuul:
        host:
            socket-timeout-millis:10000
            connect-timeout-millis:2000

        代码解析:直接配置URL路由的方式,用不上Ribbon,也用不上Hystrix,Zuul转发所使用的过滤器是 org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter ,在这个过滤器中,Zuul使用Apache HttpClient进行转发。 
        在现实场景中,有时候可能两种路由方式配合使用,因此,建议大家配置以上所有属性。

        Hystrix的超时

        hystrix:
        command:
            default: 
                execution:
                     timeout:
                         enabled:true
                        isolation: 
                            thread:
                                timeoutInMilliseconds:1000

         

         如上,Hystrix的默认超时时间是1秒。默认开启超时机制。如需关闭Hystrix的超时,可将xxx.enabled设置为false。

        Tips

        如有组件跟Hystrix配合使用,一般来讲,建议Hystrix的超时 > 其他组件的超时,否则将可能导致重试特性失效。

        注:转载自 周立SpringCloud

分享到:
评论

相关推荐

    Spring Cloud中各组件超时总结

    在大家学习spring cloud的时候组件是必不可少的一部分,下面这篇文章主要给大家介绍了关于Spring Cloud中各组件超时的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

    springCloud

    断路器示意图 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下,通常会有多个层次的服务调用. 下面是微服架构下, 浏览器端通过API访问后台微服务的一个示意图: hystrix 1 一个微服务的超时...

    毕业设计之SpringCloud-B2C电子商务平台服务端.zip

    毕业设计之SpringCloud-B2C电子商务平台服务端。 开发技术 Spring,SpringMVC,Spring Cloud相关组件 Mybatis,Maven Mysql,Redis Jquery,Ajax, Solr Android 项目描述: 基于SpringCloud微服务架构的B2C电子...

    微服务springcloud之ribbon使用demo

    Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一。Ribbon客户端...

    高级java笔试题-spring-cloud:spring-cloud学习项目

    高级java笔试题 spring-cloud 学习项目 本项目是学习《中华石杉老师-21天互联网Java进阶面试训练营(分布式篇)》课程时自己...的组件,初始化这些组件需要耗费一定的时间,所以很容易导致超时问题。 解决办法就是让

    Dubbo 是一款高性能、轻量级的开源 RPC 框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架

    Dubbo 和 Spring Cloud 有什么哪些区别? Dubbo 和 Dubbox 之间的区别? 注册中心 Dubbo 有哪些注册中心? Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么? 集群 Dubbo集群提供了哪些负载均衡策略? ...

    cloud-alibaba:Spring+阿里巴巴架构建设

    云阿里巴巴spring + alibaba架构构建热部署Devtools eureka服务中心配置及部署环境配置提供服务端全局环境配置...dev 配置Ribbon负载均衡手写负载均衡算法配置openfeign组件的服务调用超时配置日志配置配置中心

    java中solr的笔试题-note:个人学习信息

    java中solr的笔试题 个人学习笔记 python nginx AWS认证考试 技术路线 LB负载均衡 负载均衡常见使用场景,问题定位,特别是对于...Cloud/Spring Boot django/flask mybatis 存储 对于数据存储类的技术栈,主要是在缓存

    基于springboot , zookeeper , redis 分布式事务强一致性方案+源代码+文档说明

    基于注解使用,对业务代码可以说是零入侵,目前内置适配spring-cloud(Feign调用) , dubbo。 同时具备一定的扩展性与兼容性,因为存在自定义的服务框架,或者以后会涌现出更多的流行分布式服务框架,所以会提供...

    java开源包1

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包11

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包2

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包3

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包6

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包5

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包10

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包4

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包8

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包7

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

    java开源包9

    5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 ...

Global site tag (gtag.js) - Google Analytics