Spring Cloud各组件超时总结
Ribbon的超时
- 全局设置:
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
- 1
- 2
- 3
- 局部设置:
service-id:
ribbon:
ReadTimeout:1000
ConnectTimeout:1000
- 1
- 2
- 3
- 4
其中, service-id 是Ribbon所使用的虚拟主机名,一般和Eureka Server上注册的服务名称一致,即:与 spring.application.name 一致。
Feign的超时
从Spring Cloud Edgware开始,Feign支持使用属性配置超时:
feign:
client:config:
feignName:
connectTimeout:5000
readTimeout:5000
- 1
- 2
- 3
- 4
- 5
对于老版本,可以写个 feign.Request.Options ,参考: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions 的写法即可。
RestTemplate的超时
一些时侯,我们可能使用了RestTemplate,例如
@Bean
@LoadBalanced
public RestTemplate restTemplate ()
{
return new RestTemplate ();
}
- 1
- 2
- 3
- 4
- 5
- 6
此时,超时可使用如下方式设置:
@Bean
@LoadBalanced
public RestTemplate restTemplate ()
{
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory ();
simpleClientHttpRequestFactory.setConnectTimeout(1000);
simpleClientHttpRequestFactory.setReadTimeout(1000);
return new RestTemplate(simpleClientHttpRequestFactory);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Zuul的超时
Zuul的超时比较复杂,因为Zuul整合了Ribbon、Hystrix。下面分两种情况讨论:
- 如果Zuul的路由使用了Ribbon
那么:Zuul的超时则与Ribbon、Hystrix相关,此时Zuul的超时可以配置类似如下:
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds:1000
ribbon:
ReadTimeout:1000
ConnectTimeout:1000
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
代码解析:此种情况下,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对应的路径。
- 1
- 2
- 3
- 4
- 5
那么,此时Zuul的超时只与如下两个配置有关:
zuul:
host:
socket-timeout-millis:10000
connect-timeout-millis:2000
- 1
- 2
- 3
- 4
- 5
代码解析:直接配置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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如上,Hystrix的默认超时时间是1秒。默认开启超时机制。如需关闭Hystrix的超时,可将xxx.enabled设置为false。
Tips
如有组件跟Hystrix配合使用,一般来讲,建议Hystrix的超时 > 其他组件的超时,否则将可能导致重试特性失效。
注:转载自周立SpringCloud
Spring Cloud各组件超时总结的更多相关文章
- Spring Cloud 各组件调优参数
Spring Cloud整合了各种组件,每个组件往往还有各种参数.本文来详细探讨Spring Cloud各组件的调优参数. Tomcat配置参数 1 server: 2 tomcat: 3 max-c ...
- Spring Cloud各个组件的配套使用
我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构. 其中Eureka负责服务的注册与发现, ...
- Spring Cloud 各个组件介绍
从上图可以看出 Spring Cloud 各个组件相互配合,合作支持了一套完整的微服务架构: Eureka 负责服务的注册与发现,很好地将各服务连接起来. Hystrix 负责监控服务之间的调用情况, ...
- Spring Cloud常用组件及各组件版本对应关系图
Spring Cloud常用组件: 架构图: 版本对应关系:
- Spring Cloud feign 服务超时处理
Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fa ...
- Spring Cloud Feign组件
采用Spring Cloud微服务框架后,经常会涉及到服务间调用,服务间调用采用了Feign组件. 由于之前有使用dubbo经验.dubbo的负载均衡策略(轮训.最小连接数.随机轮训.加权轮训),du ...
- Spring Cloud各组件
讲的不错:http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html Spring Cloud技术应用从场景上可以 ...
- Spring Cloud Config Client 超时与重试
简介 有时客户端需要在 config server 无响应时进行重试,以给 config server 时间进行恢复.利用 spring 提供的重试组件,我们可以方便的配置重试机制,包括重试间隔,重试 ...
- Spring Cloud 各个组件角色简介
概述 SpringCloud 是一个全家桶式的技术栈,包含了很多组件:包含 Eureka.Ribbon.Feign.Zuul .Hystrix等.每个组件完成对应的功能 组件介绍 - 服务发现 Eur ...
随机推荐
- Factory Method
Question:Based on the previous article,what could you do if we must add an extra function? For exam ...
- SEO三种职位类型:编辑型SEO、技术型SEO、营销型SEO详解
SEO三种职位类型:编辑型SEO.技术型SEO.营销型SEO详解 网站SEO优化作为营销端的服务之一,这些年也呈现出日新月异的格局.一改过去游兵散将式的小作坊生产模式,不断有力量强大的公司团体加入到这 ...
- 三角形垂点坐标js算法(三点定圆求圆心)
已知平面三点坐标A(x1, y1).B(x2, y2).C(x3, y3),三点定圆也就是三角形的中垂线交点, //平面三点定位算法 function locate(x1, y1, x2, y2, x ...
- 新建git并将本地代码上传到分支
1 查看远程分支 $ git branch -a * br-2.1.2.2 master remotes/origin/HEAD -> origin/master remotes/origin/ ...
- Music life
some songs: you are you are <<你眼中的世界> Trouble I'm In > 1:40 secs 忧桑钢琴曲 < 豆花之歌 The Tru ...
- 51Nod 1090 3个数和为0
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1090 思路:排序 三个for循环 但是要控制循环 不能从头开 ...
- LCA 最近公共祖先 (模板)
#include <iostream> #include <stdio.h> #include <cstring> #include <vector> ...
- excel vba 数据分析
(Visual Basic Application) VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言,其语法结构与Visua ...
- Hadoop HA方案调研
原文成文于去年(2012.7.30),已然过去了一年,很多信息也许已经过时,不保证正确,与Hadoop学习笔记系列一样仅为留做提醒. ----- 针对现有的所有Hadoop HA方案进行调研,以时间为 ...
- 关于js浅拷贝与深拷贝的理解
前端开发中,一般情况下,很少会去在意深拷贝与浅拷贝的关系. 大家知道,js变量有2种数据类型:基本类型和引用类型.基本类型的拷贝是将整个值完全拷贝一份的,也就是深拷贝.就是开辟了新的堆内存.所以基本类 ...