SpringCloud微服务实战——搭建企业级开发框架(十三):OpenFeign+Ribbon实现高可用重试机制
Spring Cloud OpenFeign 默认是使用Ribbon实现负载均衡和重试机制的,虽然Feign有自己的重试机制,但该功能在Spring Cloud OpenFeign基本用不上,除非有特定的业务需求,则可以实现自己的Retryer,然后在全局注入或者针对特定的客户端使用特定的Retryer。
在SpringCloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试,下面我们实际操作来测试Spring Cloud架构中的重试机制。
1、因为Ribbon默认是开启重试机制的,使用上一章节的代码可以测试重试机制,这里为了分辨是否执行了重试,我们把gitegg-service-cloud下面配置的Ribbon负载均衡策略改为轮询。按照上一章节方式启动三个服务,然后页面快速点击测试,发现服务端口一直有规律的切换。然后,快速关闭其中一个gitegg-service-system服务,此时继续在页面快速点击测试,我们发现接口并没有报错,而是切换到其中一个服务的端口,这说明重试机制有效。
2、接下来,我们修改配置文件使重试机制失效,就可以看到服务关闭后因没有重试机制系统报错的结果。修改GitEgg-Platform工程下子工程gitegg-service-cloud的代码,添加Ribbon相关配置文件,因为Ribbon默认是开启重试机制的,这里选择关闭
ribbon:
#请求连接的超时时间
ConnectTimeout: 5000
#请求处理/响应的超时时间
ReadTimeout: 5000
#对所有操作请求都进行重试
OkToRetryOnAllOperations: false
#切换实例的重试次数
MaxAutoRetriesNextServer: 0
#当前实例的重试次数
MaxAutoRetries: 0
3、GitEgg-Platform重新install,GitEgg-Cloud项目重新导入依赖,然后重启三个服务,这时,快速点击测试接口的时候再关闭其中一个服务,发现接口在访问服务的时候因为没有重试机制,导致访问接口报错
本文源码在https://gitee.com/wmz1930/GitEgg 的chapter-13分支。
最新文章
- python将图片转换为Framebuffer裸数据格式(终端显示图片)
- JS脚本收藏(一些实用的函数)
- 利用Github Pages生成一个快速访问的网址,展示自己的项目
- ubuntu eclipse 不能新建javaweb项目解决方案
- freeswitch编译
- ajax 的基本原理
- 让图片在DIV中垂直居中
- 解压和生成 system.img&;data.img ( ext4格式)
- ACCESS数据库增强器需求及介绍
- Jmeter(十三)用Jmeter自带录制工具代理录制手机端应用脚本APP脚本
- IDEA中debug启动tomcat报错。Error running t8:Unable to open debugger port(127.0.0.1:49225):java.net.BindException";Address alread in use:JVM_Bind";
- Service Worker MDN英文笔记
- golang struct
- 小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)
- Laravel View Composer - 当 include 一个模板时,自动获取其所需的变量
- CSS3 Flexbox可视化指南
- Elasticsearch之优化
- 将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出
- ILP32、ILP64、LP64、LLP64、64位系统
- 去n的第一个出现的1