Spring Cloud 项目各种超时时间设置详解

gateway网关指定路由响应超时时间 这个配置用于设置HttpClient的响应超时时间,单位是毫秒。具体来说,这个配置表示当Gateway向后端服务发出请求后,如果在10秒内没有收到后端服务的响应,就会触发超时处理。这个设置是全局的,也就是说对Gateway的所有请求都生效,除非针对特定路由进行了覆盖或更改。通过设置响应超时时间,可以控制Gateway与后端服务之间的通讯时间,确保系统能够及时处理超时情况,从而提高系统的可靠性和稳定性。 阅读详情
AI摘要

本文详述了SpringCloud环境下微服务间的调用超时与熔断机制,包括Hystrix、Ribbon及Gateway的配置策略,适用于复杂业务场景如大文件上传下载,以及定时任务需求。

1、本文主要内容

  • 服务间调用Hystrix针对单个方法超时时间设置
  • Spring Cloud Gateway 针对单独URL的超时时间设置

2、超时时间设置场景

通常整个系统会有统一的接口超时时间设定,一般情况下的增删改查也都会比较快,但也会存在一些特殊的业务场景,接口需要的较长的超时时间,比如:上传(大文件)、下载等等。

这种默认的超时设置就不能满足了,如果统一把超时时间都设置长,就起不到超时熔断的效果了。

再有一种情况,在有定时任务的项目中,默认的1秒、2秒超时时间,显然也不能满足了,这时候我们就需要针对具体的方法设置单独的超时熔断时间了。

在Spring Cloud 项目里面,超时时间的设置通常有三个层面:

  • 网关(Gateway、zuul等)
  • ribbon
  • 熔断器Hystrix

通常来讲,网关的超时时间是最长的,假设服务调用链路是 网关-A服务-B服务,网关超时时间应该是调用链总和,其次是Hystrix的超时时间也应该比ribbon的时间长,因为ribbon存在重试机制。

3、设置方法

微服务之间调用超时时间设置

目前大部分微服务项目,都是在Spring Cloud的体系下搭建的架构,既然是微服务项目,那相对应的在一个项目中就会存在服务之间的调用,目前比较常用的都是通过openfeign来进行调用,那么如何设置超时时间呢?

openfeign是集成有负载均衡ribbon、熔断器hystrix的,所以超时时间,就需要针对这两个进行设置。

  • ribbon

    ribbon:
      OkToRetryOnAllOperations: false # 对所有操作请求都进行重试,默认false
      ReadTimeout: 10000   # 负载均衡超时时间,默认值5000
      ConnectTimeout: 2000 # ribbon请求连接的超时时间,默认值2000
      MaxAutoRetries: 0     # 对当前实例的重试次数,默认0
      MaxAutoRetriesNextServer: 1 # 对切换实例的重试次数,默认1
    
  • hystrix

    hystrix:
      command:
        default:  # default全局有效,service id指定应用有效
          execution:
            timeout:
              enabled: true
            isolation:
              thread:
                timeoutInMilliseconds: 200000 # 断路器超时时间,默认1000ms
        # 针对单个服务及方法的设置方法
        RemoteMaterialService#saveMaterialInfo(MaterialInfo):
          execution:
            timeout:
              enabled: true
            isolation:
              thread:
                timeoutInMilliseconds: 600000 # 断路器超时时间,默认1000ms
    

    Hystrix针对单个服务设置超时时间语法

    类名#方法名(参数类型,参数类型……)

    类名:要设置的某个FeignClient的类名

    方法名:设置FeignClient里面的方法

    入参类型:方法里面需要传入的参数。如果是基础类型,就直接填基础类型:String/int等;如果是某个对象,就直接填对象的类名

  • ribbon与hystrix之间的超时时间关系:

    • 如果hystrix.command.default.execution.timeout.enabled为true,则会有两个执行方法超时的配置,一个就是ribbon的ReadTimeout,一个就是熔断器hystrix的timeoutInMilliseconds, 此时谁的值小谁生效
    • 如果hystrix.command.default.execution.timeout.enabled为false,则熔断器不进行超时熔断,而是根据ribbon的ReadTimeout抛出的异常而熔断,也就是取决于ribbon
    • ribbon的ConnectTimeout,配置的是请求服务的超时时间,除非服务找不到,或者网络原因,这个时间才会生效
    • 由于ribbon的重试机制,通常熔断的超时时间需要配置的比ReadTimeout长,ReadTimeout比ConnectTimeout长,否则还未重试,就熔断了
    • 为了确保重试机制的正常运作,理论上(以实际情况为准)建议hystrix的超时时间为:(1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout
网关Gateway

项目中有网关层之后,所有的前端请求都会从网关过一下,然后网关根据规则将请求分发到不同的服务Server。网关Gateway是自动集成有ribbon的,当然也有熔断Hystrix,所以设置超时时间,也要从这两个地方入手。

  • 自定义一个熔断工厂,支持指定请求路径设置超时时间,代码就不粘贴了,很长,影响思路,有需要的可以公众号内回复【SpecialHystrix】获取。下方有公众号二维码,欢迎关注哈,谢谢~~~

    这个完全是根据源码改写的,小伙伴可以自行与源码对比哈

  • Gateway使用自定义熔断工厂配置路由实例

    cloud:
        gateway:
          routes:
            #system 模块
            - id: cloud-system
              uri: lb://cloud-system
              predicates:
                - Path=/system/**
              filters:
                - StripPrefix=1
                  # 降级配置
                - name: SpecialHystrix # 指定自定义熔断工厂
                  args:
                    id: SpecialHystrix
                    fallbackUri: 'forward:/fallback'
                    timeout:
                      #指定接口超时处理
                      test-hell: 6000
                      #本地导出78万数据用了510s
                      rawMaterialStock-exportRawMaterial: 600000
    hystrix:
        command:
          default:  #default全局有效,service id指定应用有效
            execution:
              isolation:
                thread:
                  timeoutInMilliseconds: 1000 #断路器超时时间,默认1000ms                 
    

    有任何问题欢迎关注公众号私信我,一起探讨,一起学习
    在这里插入图片描述

Spring Cloud: OpenFeign 超时重试机制 介绍Spring Cloud的OpenFeign中超时重传的使用 阅读详情

相关推荐

Spring Cloud Gateway:配置HTTP超时

可以为所有路由配置HTTP超时(响应和连接),并针对每个特定路由进行覆盖配置。

专注于深入研究多种编程语言,以实战为导向,逐步拓展开发技能,提升工程化编码和思维能力,展现无敌技术实力。 9581

spring cloud gateway设置超时时间

动态的处理每个路由请求,重写超时时间设置类,重写在自定义过滤器继承AbstractGatewayFilterFactory过滤器上,工作中遇到一个新需求,动态的给每个请求设置超时时间,spring cloud底层是用的HttpClient请求的,源代码只看到了响应时间处理,我这里用的响应超时时间,超过时间提示用户504 网关超时。类中直接设置请求时间和响应时间。

weixin_38081382的博客 1万+

Spring Cloud Gateway 超时、CORS配置 | Spring Cloud 17

`Spring Cloud Gateway` 可以为所有路由配置 `Http 超时(响应和连接)`,并为每个特定路由覆盖设置。 `Spring Cloud Gateway`可以为网关配置全局或单路由的跨域行为控制。两者都提供相同的特性。

gmHappy 8024

跨域问题

解决 1、在每一个controller层的类上加入注解@CrossOrigin 2、使用gateway网关解决跨域问题 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.

Rabir-YellowDavid的博客 421

MD01和MD01N比较

摘要:MD01(传统MRP)与MD01N(MRP Live)是SAP系统不同版本的物料需求计划事务码。核心差异包括:MD01N取消MRP列表、简化计划规则、合并MPS/MRP操作、采用BAdI技术等,体现S/4HANA平台简化、标准化和智能化的演进方向。MD01N通过优化参数配置、增强筛选功能、利用HANA实时计算能力,实现了更高效的物料计划流程,代表了新一代计划引擎的技术革新。

SAP_LES_COM的博客 891

基于STM32的电子琴音乐播放器设计

​ 本设计以实际电路为最后的结果,实现了所有与其功能,具有重要的现实意义。件,在Proteus中进行原理图绘制,然后把 .hex文件下载到STM32F103RBT6中 进行仿真。由于网络上 下载的 Proteus中 没有 STM32F103RBT6这个芯片型号,我们又从网上 下载芯片 进行仿真。​ 本设计以实际电路为最后的结果,实现了所有与其功能,具有重要的现实意义。

TMMXA的博客 2万+

设置超时_Spring Cloud 项目各种超时时间设置详解

1、本文主要内容服务之间调用Hystrix针对单个方法超时时间设置Spring Cloud Gateway 针对单独URL的超时时间设置2、超时时间设置场景通常整个系统会有统一的接口超时时间设定,一般情况下的增删改查也都会比较快,但也会存在一些特殊的业务场景,接口需要的较长的超时时间,比如:上传(较大文件)、下载等等。这种默认的超时设置就不能满足了,如果统一把超时时间都设置长,就起不到超...

weixin_39907220的博客 2620

ESP32-BLE学习1-建立简单的server

start 学习之前,我想尝试使用ESP32的demo建立一个简单的server与手机接进行最基本的数据通信。 这里有BLE的简单讲解BLE资料 因为BLE的连接是具有主从机特性的,就像SPI,USB一些请求只能由主机端发起,连接也需要主机端发起。所以手机要想连上ESP32,就得将ESP32设置为从机模式。 从资料上可以看到,从机端通过Notify通知主机,所以从机就是GATT Server。 在进行ESP32 的demo学习之前,得大体看下ESP32的蓝牙组成,ESP32支持经典蓝牙和低功耗蓝牙4.2,

Spark的博客 1842

feign超时时间设置_Spring Cloud 项目各种超时时间设置详解

1、本文主要内容服务之间调用Hystrix针对单个方法超时时间设置Spring Cloud Gateway 针对单独URL的超时时间设置2、超时时间设置场景通常整个系统会有统一的接口超时时间设定,一般情况下的增删改查也都会比较快,但也会存在一些特殊的业务场景,接口需要的较长的超时时间,比如:上传(较大文件)、下载等等。这种默认的超时设置就不能满足了,如果统一把超时时间都设置长,就起不到超...

weixin_39568597的博客 6105

NVIDIA Isaac Sim 入门教程 - 运动生成控制器(Motion Generators)

机器人任务通常在任务空间中根据所需的末端执行器轨迹进行定义,而控制动作则在关节空间中执行。这自然会产生关节空间和任务空间(操作空间)控制方法。然而,要利用运动控制成功执行交互任务,往往需要对机械臂及其环境都建立精确的模型。虽然可以知道足够精确的机械臂模型,但很难获得详细的环境描述 [SSVO09]。可以通过在交互过程中引入顺应行为来克服这种不匹配造成的规划错误。虽然顺应性可以通过机器人的结构(如弹性致动器、软机械臂)被动实现,但我们对侧重于主动交互控制的控制器设计更感兴趣。这些设计大致分为注释。

2506_90492529的博客 1578

Java炫酷烟花③(完整代码)

Java语言实现炫酷烟花动画的完整代码。 下载代码 下载链接:我是一只有趣的兔子,感谢你的喜欢。

AIGC 784

5、openFeign超时时间设置

全局配置 通过 Options 可以配置连接超时时间和读取超时时间,Options 的第一个参数是连接的超时时间(ms),默认值是 2s;第二个是请求处理的超时时间(ms),默认值是 5s。

weixin_43472934的博客 1万+

innovus:Patch Wire(补丁线)

1)选中wire ,shift+A使用Edit Route功能,F3打开edit route对话框。线道Create Patch Wire,设置好层次和宽度。在修补一些min area的drc时,会有一些danling wire的drc冒出来,为了避免这些假错,可以使用工具patch wire功能。2)沿着选中的wire画线即可。如下图,patch wire和regular wire是能看出区别的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1963

spring cloud各种超时时间及重试设置

如果是zuul(网关)的超时时间需要设置zuul、hystrix、ribbon等三部分: zuul超时设置 #zuul超时设置 #默认1000 zuul.host.socket-timeout-millis=2000 #默认2000 zuul.host.connect-timeout-millis=4000 hystrix超时设置 #熔断器启用 feign.hystrix.enabled=......

wudiyong22的专栏 2万+

YOLOv11改进,YOLOv11添加DCNv4可变性卷积(windows系统成功编译),二次创新C3k2结构,全网最详细教程

引入了可变形卷积 v4 (DCNv4),这是一种为广泛视觉应用设计的高效且有效的操作算子。DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。DCNv4在多个任务中表现出色,包括图像分类、实例和语义分割,特别是在图像生成方面表现突出。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2665

C# 接口和抽象类

文章目录1. 什么是接口和抽象类2. 接口与单元测试3. 依赖&耦合4. 依赖翻转5. 单元测试 1. 什么是接口和抽象类 接口和抽象类都是“软件工程产物” 具体类->抽象类->接口:越来越抽象,内部实现的东西越来越少 抽象类是未完全实现逻辑的类(可以有字段和非public成员,它们代表了“具体逻辑”) 抽象类为复用而生:专门作为基类来使用,也具有解耦功能 封装确定的,开放不确定的,推迟到合适的子类中去实现 接口是完全未实现逻辑的“类”(“纯虚类”;只有函数成员;成员全部publi

汽车电子软件领域知识分享 1013

Spring Cloud Open Feign 超时配置及源码分析

在开发 Spring Cloud 微服务项目时候,Feign 调用是非常常见的,Feign 调用的底层还是 HTTP 的远程调用,会有超时问题,如果没有搞清楚超时问题,生产环境的调用肯那个会有种种问题出现,本篇我们来分享一下 Feign 调用的超时配置。

weixin_42118323的博客 4013

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring Cloud的Feign和ribbon和Hystrix超时时间设置及关系

我们用到spring Cloud的时候,Feign和Ribbon和Hystrix都是必不可少的配置项。下面就来详细说下他们三者的关系及如何配置。本次演示采用:spring-cloud-starter-openfeign:2.1.0RELEASE版本。

m0_57640408的博客 2626

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Feign的各种超时时间(含局部方法设置超时案例)

关于Feign的超时记录: 在Spring Cloud微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂,服务要进行比较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常。 1、关于hystrix的熔断超时 如果Feign开启了熔断,必须要重新设置熔断超时的时间,因为默认的熔断超时...

hhj13978064496的博客 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Spring Cloud】OpenFeign 远程调用流程及超时时间源码解析

Spring Cloud OpenFeign 超时时间及源码解析 OpenFeign为什么只需要写一个接口就能远程调用? 是怎么生成代理类的 整个流程又是怎么样的? 为什么使用openFeign时,超时时间时一秒钟? 而有时候超时时间又是60秒钟 ? 不知道你会不会有这样的困惑 如果有的话,或许这篇博文能给你答案 文章目录Spring Cloud OpenFeign 超时时间及源码解析1.添加测试案例1.1 服务提供者controller主启动类配置信息1.2 open接口1.3 OpenFeig

纸上得来终觉浅,绝知此事要躬行 5499

Spring Cloud Gateway 超时设置

背景 又一个上传文件的接口,经过了网关转发,响应时间大约2秒,后台查看上传成功,但是响应503超时,于是想到是网关的超时太短。 使用的版本 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR5</versi

爱码士的博客 8666

spring cloud各种超时时间设置

https://github.com/spring-cloud/spring-cloud-netflix/issues/1324 找到能解决这个问题的文章,最好还是得找到原理图学习。 https://codeday.me/collect/20171109/97634.html 如果是zuul(网关)的超时时间需要设置zuul、hystrix、ribbon等三部分: #zuul超时设置 #默...

sheinenggaosuwo的专栏 666

spring cloud超时时间设置

#如果是zuul(网关)的超时时间需要设置zuul、hystrix、ribbon等三部分: #zuul超时设置 #默认1000 zuul.host.socket-timeout-millis=2000 #默认2000 zuul.host.connect-timeout-millis=4000 #熔断器启用 feign.hystrix.enabled=true hystrix.command....

诚的博客 1597

Spring Cloud Feign和Ribbon的超时参数设置

文章目录前言一、SpringCloud Feign?SpringCloud Ribbon?1、Feign 介绍3.Ribbon 介绍2.默认配置4.参数设置二、坑点1 同时配置 Feign 和 Ribbon 的超时,已谁为准?三、坑点2 为什么connectTimeout和readTimeout必须同时配置?总结 前言 本篇主要介绍SpringCloud Fegin结合Ribbon实现负载均衡的超时参数详解及设置。Feign 自己有两个超时参数,它使用的负载均衡组件 Ribbon 本身还有相关配置。那

程序人生 2742
上一篇: Jenkins一键打包部署Spring Boot 应用的Docker镜像
下一篇: Java直接调用SAP函数详解---Windows篇
Hugh Pro
博客等级 码龄16年 6粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值