Spring Cloud常用组件超时总结

本文以Spring Cloud Finchley.RELEASE版本为例。

RestTemplate超时时间

RestTemplate可以通过RestTemplateBuilderl来设置超时时间:

@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder
            .setConnectTimeout(...)
       .setReadTimeout(...)
       .build();
}

Ribbon超时时间

#全局超时配置
ribbon:
  ReadTimeout: 2000  #默认5s
  ConnectTimeout: 1000 #默认2s

#针对具体的服务配置
service-id:
  ribbon:
    ReadTimeout: 1000
    ConnectTimeout: 1000

详情见默认配置列表

Feign超时时间

文档中没有详细介绍,但部分示例代码中包含了相关配置:

feign:
  client:
    config:
      default:
        connectTimeout: 5000 #默认10s
        readTimeout: 5000 #默认60s
        loggerLevel: basic

Feign的默认超时时间在Request.Options中设置的。

注意:如果在应用里同时使用Feign和Ribbon,那么超时时间配置以Feign的为主。

Hystrix超时时间

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true #默认true
        isolation:
          thread:
            timeoutInMilliseconds: 5000

Hystrix作为熔断器,通常其他组件一起使用时(如Ribbon):

//伪代码调用方式hystrix(retry(ribbon()))

此时需要将超时时间设置成比其他组件的长,否则重试机制将失效。

Zuul超时时间

由于Zuul(Spring Cloud)使用了Hystrix和Ribbon,所以它的超时配置是这2个部分的组合。 同时,如果配置了URL路由,而非通过服务的方式(不经Ribbon),还需要配置 zuul.host.connect-timeout-millis。以下是完整配置:

zuul:
  routes:
    service-id:
      path: /test/**
      serviceId: SERVICE-ID
    admin:
      path: /admin/**
      url: http://test.com/admin
  host: #针对直接发起URL请求的超时配置(不经Ribbon)
    max-total-connections: 5000
    max-per-route-connections: 500

#针对Hystrix的超时配置
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 5000

#针对Ribbon的超时配置
ribbon:
  ReadTimeout: 1500
  ConnectTimeout: 1000

如果错误地将Hystrix超时配置成2s,而Ribbon配置成5s,那么在每次请求都会看到类似于下面的警告:

2019-01-19 17:39:20.981 WARN 36568 --- [io-60362-exec-9] o.s.c.n.z.f.r.s.AbstractRibbonCommand : The Hystrix timeout of 2000ms for the command SERVICE-ID is set lower than the combination of the Ribbon read and connect timeout, 12000ms.

参考

Feign Client 配置

Spring Cloud各组件超时总结

原文地址:https://www.cnblogs.com/rgshare/p/spring_cloud_timeout_summary.html

时间: 2024-08-30 07:01:06

Spring Cloud常用组件超时总结的相关文章

Spring Cloud常用组件及各组件版本对应关系图

Spring Cloud常用组件: 架构图: 版本对应关系: 原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10853156.html

总结Spring Cloud各个组件配套使用

我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构. 其中Eureka负责服务的注册与发现,很好将各服务连接起来 Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护. Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示 Spring Cloud Config 提供了统一的配置中心服务 当配置文件发生变化的时候,Spri

Spring Cloud各个组件的使用

我们从整体上来看一下Spring Cloud各个组件如何来配套使用:总结Spring Cloud各个组件配套使用 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构.其中Eureka负责服务的注册与发现,很好将各服务连接起来Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护.Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示Spring Cloud Config 提供了统一的配置中心服务

Spring Cloud各个组件的配套使用

我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构. 其中Eureka负责服务的注册与发现,很好将各服务连接起来 Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护. Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示 Spring Cloud Config 提供了统一的配置中心服务 当配置文件发生变化的时候,Spri

java版b2b2c社交电商spring cloud分布式微服务-Spring Cloud各个组件的配套使用

我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构. 其中Eureka负责服务的注册与发现,很好将各服务连接起来Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护.Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示Spring Cloud Config 提供了统一的配置中心服务当配置文件发生变化的时候,Spring C

spring cloud常用注解及关键类

[email protected] @SpringCloudApplication @EnableFeignClients @MapperScan("com.xx.common.domain.mapper") @ComponentScan({"com.xx.common", "com.xx.api"}) public class ApiApp { public static void main(String[] args) { SpringApp

Nacos整合Spring Cloud Gateway组件

一.什么是Spring Cloud Gateway Spring Cloud Gateway是Spring Cloud官方推出的网关框架,网关作为流量入口有着非常大的作用,常见的功能有路由转发.权限校验.流量限制. 二.Spring Cloud Gateway解决的问题 如果客户端直接连各个微服务,将会出现很多问题 客户端会多次请求不同的为服务,增肌了客户端请求的复杂性. 存在跨域请求. 权限认证复杂,每个服务都需要独立认证. 后期增加服务,合并服务等重构会有较大困难. 以上问题可以借助于网关得

Spring Cloud(2)主要组件应用实例

SpringCloud SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.负载均衡.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑.另外说明spring cloud是基于Springboot的,所以需要开发中对Springboot有一定的了解,如果不了解的话可以看蚂蚁课堂SpringBoot课程. 服务提供者与消费关系 服务提供者:提供服务被人调用 消费者:调用被人服务 服务的注册与发现(Eu

Spring cloud Feign 深度学习与应用

简介 Spring Cloud Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数.格式.地址等信息.Feign会完全代理HTTP请求,开发时只需要像调用方法一样调用它就可以完成服务请求及相关处理.开源地址:https://github.com/OpenFeign/feign.Feign整合了Ribbon负载和Hystrix熔断,可以不再需要显式地