SpringCloud实战(十七)-基于Ribbon动态路由实现:调用链控制/版本控制/灰度发布(粒度更细,可以控制到每一个微服务模块版本的路由)

Posted 张志翔ۤ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud实战(十七)-基于Ribbon动态路由实现:调用链控制/版本控制/灰度发布(粒度更细,可以控制到每一个微服务模块版本的路由)相关的知识,希望对你有一定的参考价值。

Demo代码地址:https://download.csdn.net/download/qq_19734597/21454192

有什么用

  1. 可实现一套调用链管理工具,将管理好的调用链保存于redis中,实现一个ServiceLancherHandler类,从redis中取指定服务的访问tag,实现调用链管理
  2. 对服务添加自定义tag,例如blue/green,比如有一个服务A,线上运行版本为blue,如果需要升级服务,可先发布版本为green的服务A,然后在测试机中添加指定A:blue的header,可进行线上测试
    如果测试没问题,可通过调用链管理工具将redis中A:blue改为A:green,实现流量不停机切换,解决服务刷新延迟问题,如果切换后发现green版本有bug,可随时切换为blue.
  3. local环境无需搭建所有依赖服务,例如正在开发服务B的一些新本功能,可在启动B时打上自己的tag,并注册上dev环境的eureka,测试时可在header中指定B:myName,将自己发出的请求在访问B服务时转发到本机启动的B服务.
  4. 解决eureka缓存以及ribbon缓存服务注册表导致本地缓存刷新延迟从而在服务切换过程中多次请求已下线服务问题
  5. 彻底解决server.enable-self-preservation eureka保护模式导致应用无法下线问题
  6. 其他玩法请大胆想象...

注:下图中多次出现要判断Header中是否存在A:Gree,B:Gree(这里的Gree和Blue,我理解的应该是具体的某个微服务模块版本号、姓名或者其他规则,例如:A:v1.1.0&#

以上是关于SpringCloud实战(十七)-基于Ribbon动态路由实现:调用链控制/版本控制/灰度发布(粒度更细,可以控制到每一个微服务模块版本的路由)的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud之Ribbon

SpringCloud Alibaba微服务实战三十七 - Oauth2自定义登录接口

SpringCloud Alibaba微服务实战三十七 - Oauth2自定义登录接口

SpringCloud Alibaba微服务实战三十七 - Oauth2自定义登录接口

生产级基于SpringCloud微服务架构性能优化实战,建议收藏

MATLAB实战系列(三十七)-MATLAB基于PQ解耦风电场并网潮流计算