关于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灰度发布内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot集成cache缓存的实现

    SpringBoot集成cache缓存的实现

    日常开发中,缓存是解决数据库压力的一种方案,本文记录springboot中使用cache缓存。需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 使用Java将一个List运用递归转成树形结构案例

    使用Java将一个List运用递归转成树形结构案例

    这篇文章主要介绍了使用Java将一个List运用递归转成树形结构案例,本文通过详细的案例来解释说明了如何去操作,需要的朋友可以参考下
    2021-06-06
  • 详解Java设计模式——迭代器模式

    详解Java设计模式——迭代器模式

    这篇文章主要介绍了Java设计模式——迭代器模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 在java中使用dom解析xml的示例分析

    在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析。需要的朋友参考下
    2013-05-05
  • java使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题解决方案

    java使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题解决方案

    这篇文章主要给大家介绍了关于java使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题的解决方案,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • Java StringUtils字符串分割转数组的实现

    Java StringUtils字符串分割转数组的实现

    这篇文章主要介绍了Java StringUtils字符串分割转数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java中Collection与Collections的区别详解

    Java中Collection与Collections的区别详解

    这篇文章主要为大家详细介绍了Java中Collection与Collections的区别,文中有详细的代码示例,具有一定的参考价值,感兴趣的同学可以参考一下
    2023-06-06
  • Java RMI详细介绍及简单实例

    Java RMI详细介绍及简单实例

    这篇文章主要介绍了Java RMI详细介绍及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java通过Callable实现多线程

    Java通过Callable实现多线程

    这篇文章主要介绍了Java通过Callable实现多线程,Callable的任务执行后可返回值,运行Callable任务可以拿到一个Future对象,Future表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并检查计算的结果,需要的朋友可以参考下
    2023-10-10
  • 基于Java回顾之多线程同步的使用详解

    基于Java回顾之多线程同步的使用详解

    在这篇文章里,我们关注线程同步的话题。这是比多线程更复杂,稍不留意,我们就会“掉到坑里”,而且和单线程程序不同,多线程的错误是否每次都出现,也是不固定的,这给调试也带来了很大的挑战
    2013-05-05

最新评论