Feign、Ribbon、Hystrix超时时间的详细解析

news/2024/11/9 9:49:04/

介绍

在微服务整个系统中,需要设置相应的服务调用超时时间来保护服务,常见的调用链为 网关 -> 服务A -> 服务B

常见的设置超时时间的几个方面:

  • 网关(gateway、zuul)
  • 服务间的调用(feign)
  • 服务间的熔断(hystrix)
  • 服务间的负载均衡(ribbon)

feign

feign:client:config:# default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间,超时时间默认为1sdefault:#不设置connectTimeout会导致readTimeout设置不生效#服务之间建立连接所用的时间connectTimeout: 10000#建立连接后从服务端读取到数据用的时间readTimeout: 10000

ribbon

#OpenFeign默认支持ribbon
ribbon:#对所有操作请求都进行重试,默认falseOkToRetryOnAllOperations: false#服务之间建立连接所用的时间ConnectTimeout: 10000#建立连接后从服务端读取到数据用的时间ReadTimeout: 10000#对当前实例的重试次数,默认0MaxAutoRetries: 0  #对切换实例的重试次数,默认1   MaxAutoRetriesNextServer: 1 
public class RibbonClientConfiguration {/*** Ribbon client default connect timeout.*/public static final int DEFAULT_CONNECT_TIMEOUT = 1000;/*** Ribbon client default read timeout.*/public static final int DEFAULT_READ_TIMEOUT = 1000;
}	

ribbon和Feign默认超时时间都是1s,从RibbonClientConfiguration也能看到指明了ribbon的默认连接超时时间默认读取超时时间都是1s

feign和ribbon的优先级关系

  • Feign 和 Ribbon 的超时时间只会有一个生效
  • 如果没有配置feign的超时时间,只是配置了ribbon的超时时间,则只有ribbon的配置超时时间会生效,feign默认的1s超时无效
  • 如果feign和ribbon的超时时间都配置了,则以feign配置的为准

hystrix

hystrix:command:#default全局有效,service id指定应用有效default:execution:timeout:enabled: trueisolation:thread:#熔断超时时间,默认1000mstimeoutInMilliseconds: 200000#针对单个服务及方法的设置方法TestService#save(TestDto):execution:timeout:enabled: trueisolation:thread:#熔断超时时间,默认1000mstimeoutInMilliseconds: 300000 
public abstract class HystrixCommandProperties {private static final Integer default_executionTimeoutInMilliseconds = 1000;
}

可以看到HystrixCommandProperties类中,超时时间默认为1000ms

Hystrix单个方法设置超时时间:

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

hystrix和ribbon的超时时间关系

  • 如果hystrix.command.default.execution.timeout.enabled为true,则hystrix的超时时间配置和ribbon的超时时间配置是同时生效的,一个就是ribbon的ReadTimeout,一个就是熔断器hystrix的timeoutInMilliseconds, 此时谁的值小谁生效
  • 如果hystrix.command.default.execution.timeout.enabled为false,则熔断器不进行超时熔断,而是根据ribbon的ReadTimeout抛出的异常而熔断,也就是取决于ribbon
  • ribbon的ConnectTimeout,配置的是请求服务的超时时间,除非服务找不到,或者网络原因,这个时间才会生效
    由于ribbon的重试机制,通常熔断的超时时间需要配置的比ReadTimeout长,ReadTimeoutConnectTimeout长,否则还未重试,就熔断了
  • hystrix超时时间的配置:
    • 先计算Ribbon重试次数(包含首次) = 1 + ribbon.MaxAutoRetries + ribbon.MaxAutoRetriesNextServer + (ribbon.MaxAutoRetries * ribbon.MaxAutoRetriesNextServer)
    • hystrix超时时间 = Ribbon的重试次数(包含首次) * (ribbon.ReadTimeout + ribbon.ConnectTimeout)
    • 如果hystrix配置的时间比ribbon计算重试次数超时时间小,会出现警告级别日志The Hystrix timeout of 60000 ms for the command "foo" is set lower than the combination of the Ribbon read and connect timeout, 200000ms.

gateway

spring:cloud:gateway:httpclient:#连接服务超时时间connect-timeout: 10000#连接服务后数据返回超时时间response-timeout: 10000

gateway和ribbon、hystrix超时时间关系

  • 首先ribbon的超时时间ribbon.ReadTimeout、ribbon.ConnectTimeout在gateway转发服务中是不生效的,如果是调用feign的话依旧生效
  • gateway的超时参数和hystrix的超时参数关系
    • 如果同时存在的话,则哪个的超时配置时间小,就以哪个为准
    • 如果不同时存在,配置了hystrix的超时时间,则以hystrix为准。配置了gateway超时时间,则超时时间为1s(这个不知道为什么)

zuul

zuul:host:socket-timeout-millis: 10000connect-timeout-millis: 10000

zuul和ribbon、hystrix超时时间关系

  • 首先ribbon的超时时间ribbon.ReadTimeout、ribbon.ConnectTimeout在zuul转发服务和feign调用都是生效的,遵守ribbon和hystrix的计算公式原则
  • gateway的超时参数和ribbon的超时参数关系
    • 如果同时存在的话,以ribbon为准
    • 如果不同时存在,配置了ribbon的超时时间,则以ribbon为准。配置了zuul超时时间,则超时时间为1s(这个不知道为什么)

http://www.ppmy.cn/news/126296.html

相关文章

HP工作站如何在BIOS下开启、关闭安全芯片

开机连续点击F10进入到BIOS,选择“Security”—“Device security”按回车键进入。 2将“Embedded Security Device”右边的状态按左右方向键更改为“Device hidden”状态为关闭;更改为“Device available”状态为开启。

Z820服务器重装,惠普Z820工作站特点介绍

【IT168 资讯】双路 HP Z820 工作站在行业可扩展性最高的机箱中,提供了卓越性能、屡获殊荣的工业设计、以及免工具可维护性。凭借下一代英特尔至强处理器、高达16个处理内核和最新专业显卡,您将可以轻松完成有史以来要求最苛刻的项目。 无可比拟的设计 从…

HP工作站进入BIOS

开机后,按住键盘的Esc键 之后参考: https://jingyan.baidu.com/article/ff411625cb7d0c12e5823770.html F10进入BIOS中选择Advanced —Boot Options (可以使用鼠标) 第二步 略 第三步:选择“UEFI Boot Order”或“Legacy Boot O…

惠普计算机工作站,惠普工作站的具体分类有哪几种呢?

河南惠普工作站,是指连接到网络的计算机。 工作站的具体分类: 工作站根据软、硬件平台的不同,一般分为基于RISC架构的UNIX系统工作站和基于Windows、Intel的PC工作站。 UNIX工作站是一种高性能的工作站,具有强大的处理器和优化的内…

惠普z系列服务器,惠普Z8/Z6/Z4 G4新款工作站/服务器主机:Quadro P6000 48TB存储

随着英特尔在高端至强的完整部署,各家工作站平台也将迎来一次重大换血,在即将开幕的IBC 2017(国际广播电视设备展览会)上,HP(惠普)将宣布推出新一代 Z 系列工作站。 新一代Z系列包括Z8 G4、Z6 G4和Z4 G4三款,用于替代现有的Z840、…

hp z230 图形工作站 matlab,惠普推出Z230塔式和HP SFF小尺寸工作站

【IT168 资讯】惠普近日推出了下一代工作站产品 HP Z230 Tower和SFF。Z230 Tower沿用了塔式机箱,SFF则有着更小的外观尺寸。同一时间推出的还有Z系列显示器,可作为工作站的最佳拍档。 HP SFF(小尺寸外形Small Form Factor缩写)机身非常小巧,体…

惠普服务器如何做无盘系统,HP无盘工作站搭建操作手册..docx

HP无盘工作站搭建操作手册. 产品配置及功能操作简明手册?一、快速搭建VIM系统在安装VIM服务端之前,请确保服务器有足够的硬盘空间以放置VIM系统的镜像文件和临时文件。并预先创建disks、wks和restore三个目录(名称可自定义,建议将disks和wks两个目录分别…

惠普z4g4装Linux系统,hp z6 g4 工作站

操作系统面向工作站的 Windows 10 Pro 1、21、22面向 Linux 的惠普安装套件HP Red Hat Enterprise Linux (HP Linux 安装套件包括面向 64 位版 Red Hat Enterprise Linux 6.7 和 7、SUSE Linux Enterprise Desktop 11 及 Ubuntu 14.04 的驱动程序。Red Hat Enterprise Linux(仅…