`

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实战 _springcloud实战_springcloud_

    Hystrix是Spring Cloud提供的容错管理工具,它通过隔离请求、降级策略、超时控制等机制,确保在高并发、网络延迟或服务故障时,系统仍然能够稳定运行。Hystrix的断路器模式是其核心特性,能够防止服务雪崩效应,提高...

    spring-cloud项目_springcloud_springcloud项目_springcloud_spring-clou

    2. **Eureka**: Spring Cloud Eureka 是服务发现组件,它实现了 Netflix Eureka 的服务器和客户端。服务提供者注册到 Eureka Server,服务消费者通过 Eureka Server 获取服务提供者的地址,实现服务的自动发现。 3....

    Spring Cloud中各组件超时总结

    以下是对Spring Cloud中几个关键组件超时设置的详细讲解: 1. **Ribbon的超时设置** Ribbon是Spring Cloud中的客户端负载均衡器,它提供了连接和读取的超时配置。全局设置可以在`application.yml`或`application....

    深入理解Spring Cloud完整组件微服务的构建

    本章将深入探讨Spring Cloud的各个关键组件,以及如何利用它们来构建微服务架构。 1. **Eureka**:Eureka是Spring Cloud中的服务注册与发现组件,它允许服务提供者向注册中心注册自己的服务,同时服务消费者可以从...

    SpringCloud 20道面试题和答案.docx

    SpringCloud面试题和答案 SpringCloud是一种架构风格,也是一种服务,它的颗粒比较小,一个大型复杂软件应用由多个微服务组成。每种服务只做一件事,是一种松耦合的能够被独立开发和部署的无状态化服务(独立扩展、...

    SpringCloud基本框架+完整示例工程.rar

    这个压缩包内的“SpringCloud基本框架+完整示例工程”应该包含了一个运行的SpringCloud项目,开发者可以通过阅读源代码,理解上述各组件的配置和使用方式。同时,示例工程还可能包含了测试用例和日志输出,有助于...

    SpringCloud与五大组件的整合.zip

    这个压缩包"SpringCloud与五大组件的整合.zip"包含了对SpringCloud核心组件的实践示例,帮助开发者理解并掌握如何使用这些组件。我们将逐一探讨这五大组件——Eureka、Ribbon、Hystrix、Feign和Zuul。 1. **Eureka*...

    Spring Cloud 学习笔记.pdf

    Spring Cloud的组件可帮助开发者快速搭建分布式系统中涉及的常见模式。 Spring Cloud的五大核心组件包括:Eureka、Ribbon、Hystrix、Feign和Zuul。其中,Eureka是服务注册与发现中心,Ribbon和Feign是服务调用组件...

    Spring Cloud面试题2020·8(35题).pdf

    1. **服务发现**:Spring Cloud 提供了 Eureka 等服务发现组件,帮助服务自动注册和发现,使得服务之间的通信更为简单。 2. **负载均衡**:Spring Cloud 结合 Ribbon 或者 Netflix Zuul 可以实现客户端负载均衡,...

    微服务Springcloud应用相关组件使用示例

    本资源中的"微服务Springcloud应用相关组件使用示例"提供了对这些关键组件的实际操作演示,帮助开发者快速理解和应用。 首先,我们来看看Spring Cloud Config,这是一个用于配置管理的工具,允许你将配置存储在远程...

    Spring Cloud 中文文档 参考手册 中文版2018

    首先,Spring Cloud Dalston是Spring Cloud的一套组件,它帮助开发者构建分布式的系统。Spring Cloud与云原生应用程序相关联,能够让开发者快速地构建一些常见的分布式系统模式,例如配置管理、服务发现、断路器、...

    SpringCloud面试题及答案.pdf

    #### 三、SpringCloud核心组件详解 3. **核心组件介绍** - **Eureka**: 服务注册与发现组件,为服务提供注册中心,支持服务间的相互发现。 - **Feign**: 一种声明式的HTTP客户端,它基于动态代理机制工作。通过...

    springcloud处理文件上传

    在分布式系统中,Spring Cloud作为一个强大的微服务框架,提供了丰富的组件来解决各种问题。本话题主要探讨如何在Spring Cloud环境中处理文件上传,特别是在结合Feign和Zuul这两个组件时的实现方法。Feign是Spring ...

    SpringCloud项目

    《SpringCloud深度实践:构建微服务架构》 在数字化转型的大潮中,微服务架构以其灵活性、可扩展性和高可用性成为了企业级应用开发的新宠。SpringCloud作为Java生态系统中最受欢迎的微服务框架,为开发者提供了全套...

    SpringCloud-master.zip

    总结,SpringCloud以其强大的功能和易用性,已经成为微服务架构的首选工具之一。理解和掌握SpringCloud的各个组件,能有效提升微服务的开发效率和系统稳定性,是现代云原生应用开发的必备技能。通过实践,我们可以更...

    Spring Cloud 中文开发参考手册.pdf

    本手册将深入探讨Spring Cloud的核心组件和服务,以便于开发者能够高效地在实际项目中运用。 1. **Eureka服务发现**:Spring Cloud Eureka是Netflix开源的微服务注册与发现组件,它提供了服务的注册、心跳检测和...

    SpringCloud.zip

    下面将对SpringCloud的关键组件进行详细介绍。 1. **Eureka注册中心**:Eureka是SpringCloud中的服务注册与发现组件。每个微服务启动时,都会向Eureka注册自己的信息,包括服务名、地址、端口等。其他服务可以通过...

    mastering-spring-cloud2018

    《Mastering Spring Cloud 2018》是关于Spring Cloud框架的一本深度指南,它涵盖了Spring Cloud的核心...通过阅读这本书,你可以掌握如何有效地利用Spring Cloud组件来构建分布式系统,并解决实际开发中的各种挑战。

    SpringCloud微服务注册调用Demo

    首先,我们来详细了解一下SpringCloud的核心组件: 1. **Eureka**:它是SpringCloud的服务注册与发现组件。服务提供者在启动时会向Eureka Server注册自身信息,服务消费者则可以通过Eureka Server查找并调用服务...

    SpringCloud.03.网关Gateway 配置文件

    在Spring Cloud生态体系中,Spring Cloud Gateway作为新一代的API网关,被广泛应用于微服务架构中,用于统一处理请求路由、过滤器链、限流、熔断等核心功能。本篇将详细介绍Spring Cloud Gateway的配置文件相关知识...

Global site tag (gtag.js) - Google Analytics