前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为Spring Cloud Ribbon配置请求重试【Camden.SR2+】

为Spring Cloud Ribbon配置请求重试【Camden.SR2+】

作者头像
程序猿DD
发布2018-02-01 11:02:18
7930
发布2018-02-01 11:02:18
举报
文章被收录于专栏:程序猿DD

当我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问。

下面的例子,实现了对服务名为hello-service的/hello接口的调用。由于RestTemplate被@LoadBalanced修饰,所以它具备客户端负载均衡的能力,当请求真正发起的时候,url中的服务名会根据负载均衡策略从服务清单中挑选出一个实例来进行访问。

大多数情况下,上面的实现没有任何问题,但是总有一些意外发生,比如:有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败。所以,为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败。这个时候就需要开发人员人工的来为上面的RestTemplate调用实现重试机制。

不过,从Spring Cloud Camden SR2版本开始,我们就不用那么麻烦了。从该版本开始,Spring Cloud整合了Spring Retry来实现重试逻辑,而对于开发者只需要做一些配置即可。

以上面对hello-service服务的调用为例,我们可以在配置文件中增加如下内容:

spring.cloud.loadbalancer.retry.enabled

该参数用来开启重试机制,它默认是关闭的。这里需要注意,官方文档中的配置参数少了enabled。

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds

断路器的超时时间需要大于ribbon的超时时间,不然不会触发重试。

ribbon.ConnectTimeout

请求连接的超时时间

ribbon.ReadTimeout

请求处理的超时时间

ribbon.OkToRetryOnAllOperations

对所有操作请求都进行重试

ribbon.MaxAutoRetriesNextServer

切换实例的重试次数

ribbon.MaxAutoRetries

对当前实例的重试次数

根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例,如果不行,就换一个实例进行访问,如果还是不行,再换一次实例访问,如果依然不行,返回失败信息。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿DD 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档