SpringCloud元件超時總結

2021-10-11 04:58:35 字數 2457 閱讀 7206

目錄

1、ribbon的超時

2、feign的超時

3、resttemplate的超時

4、zuul的超時

4.1、如果zuul的路由使用了ribbon

4.2、如果zuul的路由未使用ribbon

5、hystrix的超時

全域性設定:

ribbon:

readtimeout: 60000

connecttimeout: 60000

區域性設定:

service-id:

ribbon:

readtimeout: 1000

connecttimeout: 1000

從spring cloud edgware開始,feign支援使用屬性配置超時:

feign:

client:

config:

feignname:

connecttimeout: 5000

readtimeout: 5000

對於老版本,可以寫個feign.request.options,參考:org.springframework.cloud.netflix.feign.ribbon.feignribbonclientautoconfiguration#feignrequestoptions的寫法即可。

一些時,我們可能使用了resttemplate,例如

@bean

@loadbalanced

public resttemplate resttemplate()

此時,超時可使用如下方式設定:

@bean

@loadbalanced

public resttemplate resttemplate()

zuul的超時比較複雜,因為zuul整合了ribbon、hystrix。下面分兩種情況討論:

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的路由配置如下:

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.******hostroutingfilter,在這個過濾器中,zuul使用apache httpclient進行**。

在現實場景中,有時候可能兩種路由方式配合使用,因此,建議大家配置以上所有屬性。

官方文件:

hystrix:

command:

default:

execution:

timeout:

enabled: true

isolation:

thread:

timeoutinmilliseconds: 1000

如上,hystrix的預設超時時間是1秒。預設開啟超時機制。如需關閉hystrix的超時,可將***.enabled設定為false。

注意:

如有元件跟hystrix配合使用,一般來講,建議hystrix的超時 > 其他元件的超時,否則將可能導致重試特性失效。

springcloud超時機制

springcloud中有很多超時時間配置,總結一下各處超時時間的使用及配置。hystrix command default execution isolation thread timeoutinmilliseconds 100000 命令執行超時時間,預設1000ms,應大於ribbon超時時間...

Springcloud常用元件

一 eureka netfix下 雲端服務發現,乙個基於 rest 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。二 spring cloud config spring下 配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理集群配置,目前支援本地儲存 git以及subversion...

Springcloud元件介紹

springcloud是基於springboot基礎之上開發的微服務框架,springcloud是一套目前非常完整的微服務解決方案框架,其內容包含服務治理 註冊中心 配置管理 斷路器 智慧型路由 微 控制匯流排 全域性鎖 分布式會話等。springcloud包含眾多的子專案 eureka 服務治理 ...