我们使用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

对当前实例的重试次数

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

转载于:https://www.cnblogs.com/wangjing666/p/7070209.html

ribbon重试机制相关推荐

  1. Zuul ribbon 重试失效分析

    Zuul ribbon 重试机制 问题描述: Zuul转发POST请求接口异常,read timeout,没有进行重试,期望进行重试! 配置参数模拟 spring.cloud.loadbalancer ...

  2. Ribbon的重试机制

    ribbon实现了负载均衡,如果访问某服务的A节点超时后,会触发ribbon的重试机制 全局设置: ribbon:ReadTimeout: 6000ConnectTimeout: 6000MaxAut ...

  3. Spring Cloud Zuul重试机制探秘

    简介 本文章对应spring cloud的版本为(Dalston.SR4),具体内容如下: 开启Zuul功能 通过源码了解Zuul的一次转发 怎么开启zuul的重试机制 Edgware.RC1版本的优 ...

  4. php数据库连接重试机制,SpringCloud重试机制配置详解

    首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例. @Bean @LoadBalanced RestTemplate restTemplate ...

  5. 【Spring Cloud】OpenFeign和Spring Cloud Loadbalancer调用失败后的重试机制比较

    1 概述 搭建一个微服务系统,有两个服务,Client和Server,Server有三个实例A.B.C,我让Client调用Server,Loadbalancer负载分担默认采用轮询机制,当Serve ...

  6. 包装实现一个具有重试机制的RestTemplate

    工作中经常会遇到某些接口超时.返回的数据不是我们想要的,在这些情况下,可能会要求我们对该接口进行重试,但是有的接口需要重试三次,有的需要重试两次,有的不需要重试:有的返回连接超时才重试,有的读取超时才 ...

  7. springcloud-ribbon重试机制详解

    一.版本信息 springboot:2.0.5.RELEASE springcloud:Finchley.RELEASE 二.配置说明 spring-retry依赖的导入: <!--重试依赖-- ...

  8. loadingcache 有重试机制吗_重试机制的实现

    服务在请求资源,如果遇到网络异常等情况,导致请求失败,这时需要有个重试机制来继续请求. 常见的做法是重试3次,并随机 sleep 几秒. 业务开发的脚手架,HTTP Client 基本会封装好 ret ...

  9. springboot 整合retry(重试机制)

    当我们调用一个接口可能由于网络等原因造成第一次失败,再去尝试就成功了,这就是重试机制,spring支持重试机制,并且在Spring Cloud中可以与Hystaix结合使用,可以避免访问到已经不正常的 ...

最新文章

  1. 快手:魔性BGM你把握不住的,让AI来
  2. 在CentOS下安装配置MySQL(转)
  3. 博弈论进阶之Anti-SG游戏与SJ定理
  4. C#中Array.Sort()方法分析
  5. 力扣226. 翻转二叉树(JavaScript)
  6. CSS实现轮播图效果以及遮罩效果
  7. iOS UICollectionView示例教程
  8. python linux调试_linux怎么调试python
  9. java string简单例子_java从字符串中提取数字的简单实例
  10. Axure Mac汉化
  11. abap SD 定价公式(例程,即Formula)
  12. lbj学习日记 04 循环和选择结构的刷题心得
  13. 阿里大厂面试:2亿条数据需要缓存,如何设计这个存储方案?
  14. 解决 UP BROADCAST RUNNING MULTICAST 问题
  15. 足浴报钟器哪个好 足浴按摩手法
  16. MySQL入门很简单——读书笔记
  17. global mapper裁剪DEM文件的方法
  18. UltraEdit常见问题及解决教程
  19. 获取腾讯视频真实地址php源码,腾讯视频的地址解析下载
  20. 那你讲一下LeakCanary的原理

热门文章

  1. 支付宝SDK ios快捷支付
  2. NIOS2-IDE环境下的一些操作技巧
  3. 成功编译Webkit-cairo
  4. 接口测试--ssl证书问题
  5. bufferreader java_Java - BufferedReader对比FileReader到底哪里进行了优化
  6. Selenium API-WebDriver 属性
  7. java socket中的方法_Java中关于Socket的方法与作用详解
  8. gstat | 空间插值(一)——反距离权重插值;使用ggplot2绘制地图
  9. php 5.3 连接mysql_php5.3.x5.4.x5.5.x连接mysql数据库的三种方式以及所用驱动
  10. 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别