关于SpringCloud灰度发布的实现

 更新时间:2023年08月31日 11:28:27   作者:haozhugogo  
这篇文章主要介绍了关于SpringCloud灰度发布的实现,灰度发布又称金丝雀发布,是在系统升级的时候能够平滑过渡的一种发布方式,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,需要的朋友可以参考下

一、springcloud灰度发布思路

  • 注册中心:不解释了
  • 根据用户路由:user id关联路由标签
  • 区分服务实例:给服务实例打标签   eureka.instance.metadata-map.key=value
  • 负载均衡ribbon:修改路由规则,根据用户标签路由到对应服务

二、ribbon大致原理

  1. RibbonAutoConfiguration 是起始点,会在spring启动时被扫起来,实例化SpringClientFactory。
  2. SpringClientFactory 是获取Ribbon相关实例或配置的工厂类,可以获取指定服务的ILoadBalancer和IConfig等,继承自NamedContextFactory。
  3. NamedContextFactory 维护了每个服务相关的上下文AnnotationConfigApplicationContext;上下文在第一次调用时被创建,并注册、装配相关类、接口;外界获取相关类、接口就是从上下文中拿的。
  4. RibbonClientConfiguration 用来实例化自定义接口。
  5. XXXLoadBalancer 负责调用IRule选择Server,并启动定时任务更新ServerList列表。
  6. ZoneAvoidanceRule是默认的IRule,先利用XXXPredicate进行过滤,然后在从过滤的结果中选择。

三、最终代码实现

1.在目标服务上配置灰度标签。

2.将想要的灰度标签保存到threadlocal里,注意有线程池的情况。

3.自定义路由规则IRule以及预判规则Predicate,将不符合标签的服务过滤掉掉,然后从剩下的服务中选一个。

4.自定义RibbonClientConfiguration,指定用步骤3的自定义IRule。

到此这篇关于关于SpringCloud灰度发布的实现的文章就介绍到这了,更多相关SpringCloud灰度发布内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring IOC相关注解运用(上篇)

    Spring IOC相关注解运用(上篇)

    这篇文章主要介绍了Spring IOC相关注解的运用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 在SpringBoot中通过jasypt进行加密解密的方法

    在SpringBoot中通过jasypt进行加密解密的方法

    今天小编就为大家分享一篇关于在SpringBoot中通过jasypt进行加密解密的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java异常处理机制try catch流程详解

    Java异常处理机制try catch流程详解

    这篇文章主要介绍了Java异常处理机制try catch流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring源码阅读MethodInterceptor解析

    Spring源码阅读MethodInterceptor解析

    这篇文章主要为大家介绍了Spring源码阅读MethodInterceptor使用示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • SpringMVC一步到位精通拦截器

    SpringMVC一步到位精通拦截器

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器的概念及入门案例,感兴趣的可以尝试一下
    2022-12-12
  • SpringBoot概述及在idea中创建方式

    SpringBoot概述及在idea中创建方式

    SpringBoot提供了一种快速使用Spring的方式,基于约定大于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,这篇文章主要介绍了SpringBoot概述及在idea中创建方式,需要的朋友可以参考下
    2022-09-09
  • SpringCloud 微服务最佳开发实践

    SpringCloud 微服务最佳开发实践

    本文结合我们实际的开发中遇到的一些问题整理出了一份微服务开发的实践规范,对SpringCloud 微服务开发实践相关知识感兴趣的朋友一起看看吧
    2021-07-07
  • idea远程debug调试部署在tomcat上项目

    idea远程debug调试部署在tomcat上项目

    本文主要介绍了idea远程debug调试部署在tomcat上项目,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • javaSwing写关闭窗口的提示框实例

    javaSwing写关闭窗口的提示框实例

    这篇文章主要介绍了javaSwing写关闭窗口的提示框实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • spring与disruptor集成的简单示例

    spring与disruptor集成的简单示例

    本篇文章主要介绍了spring与disruptor集成的简单示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论