springcloud超时&重试

链路梳理

在介绍超时重试之前,先梳理下调用链路,因为每个项目的调用链路不一样,配置则不同。
本次测试的链路是 用户->zuul->person-client(配置ribbon,hystrix fallback)->person-service(配置hystrix)

Springcloud超时&重试介绍

springcloud全家桶里很多组件都有超时重试机制,这篇文章简单梳理下期中各个组件的配置和作用。
超时组件:zuul,ribbon,feign,hystrix
重试组件:zuul,ribbon,feign。
其中ribbon和feign有冲突,因此springcloud默认将feign超时重试机制关闭。

超时&重试配置

1、hystrix超时配置:hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=500 #设置500ms,默认1000ms,对应方法要写上@HystrixCommand,否则无法生效
2、ribbon超时配置(客户端配置):
ribbon.OkToRetryOnAllOperations=true #默认禁止重试
ribbon.MaxAutoRetries=2 #当前重试次数
ribbon.MaxAutoRetriesNextServer=2 #下一个节点重试次数(这里实际上会重试9次,(正常调用+MaxAutoRetries)*(当前节点调用+MaxAutoRetriesNextServer))
ribbon.ReadTimeout=200 #ribbon超时时间
ribbon.ConnectTimeout=100 #连接时间
如果在调用链路中有配置ribbon和hystrix,则哪个时间小则以哪个为准
3、zuul 中配置超时时间,据官方的介绍,分两种情况:
用 serviceId 进行路由时,使用 ribbon.ReadTimeoutribbon.SocketTimeout 设置
用指定 url 进行路由时,使用 zuul.host.connect-timeout-milliszuul.host.socket-timeout-millis 设置

总结

1、如果zuul超时时间小于ribbon重试,则以zuul超时时间为准,否则以ribbon为界限
2、若为配置ribbon重试机制,则正常链路中无重试功能

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值