关于前端:SpringCloud微服务实战搭建企业级开发框架十三OpenFeignRibbon实现高可用重试机制

30次阅读

共计 939 个字符,预计需要花费 3 分钟才能阅读完成。

  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 分支。

正文完
 0