springboot+nacos+gateway实现灰度发布的实例详解

 更新时间:2024年09月15日 11:26:29   作者:zbmzbm00  
灰度发布是一种在软件部署过程中用于平滑过渡的技术,通过引入灰度发布SDK和配置网关策略实现,本文就来介绍一下,感兴趣的可以了解一下

概要

如何在微服务实现灰度发布呢?

  • 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

有什么功能

首先我是自定义了一个灰度发布的sdk,引入该包可以实现,指定服务灰度发布,并指定灰度权重

指定权重后,网关调用时会根据权重打到灰度服务,当然调用的时候需要指定灰度版本

技术细节

1.在网关中引入灰度发布包

 <dependency>
      <groupId>com.zbm.gray</groupId>
      <artifactId>springboot-gray-starter</artifactId>
      <version>1.0.0-SNAPSHOT</version>
</dependency>

2.网关配置灰度策略

gray:
  loadbalancer:
    enabled: true
    weight: 20    //灰度权重20%

3.灰度服务A

gray:
  loadbalancer:
    enabled: true
    version: 2 //灰度版本号

4.网关接口调用

 @Autowired
    @Qualifier("newRestTemplate")
    private RestTemplate restTemplate;
    @GetMapping("/testGray")
    public String testGray(){
        MultiValueMap<String, String> headers=new HttpHeaders();
        headers.add("version","2");
        HttpEntity<?> requestEntity = new HttpEntity<>(headers);
        ResponseEntity<String> exchange = restTemplate.exchange("http://test-gray/api/v1/test", HttpMethod.GET, requestEntity, String.class);
        return exchange.getBody();
    }

说明:如果调用过程中不传递version,那么不会调用到灰度服务上

5.原理说明

首先我们需要在灰度服务引入灰度sdk,然后发布,我们正常服务不需要引入,在网关引入并配置灰度策略,那么会根据负载均衡策略和我们配置的权重选择服务。

小结

具体示例代码可见github:https://github.com/zbmzbm/gray-project

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

相关文章

  • Java实现上传和下载功能(支持多个文件同时上传)

    Java实现上传和下载功能(支持多个文件同时上传)

    这篇文章主要介绍了Java实现上传和下载功能,支持多个文件同时上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • JAVA面向对象 封装原理及实例解析

    JAVA面向对象 封装原理及实例解析

    这篇文章主要介绍了JAVA面向对象 封装原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • mybatis如何批量添加一对多中间表

    mybatis如何批量添加一对多中间表

    这篇文章主要介绍了mybatis如何批量添加一对多中间表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • JAVA反射机制实例教程

    JAVA反射机制实例教程

    这篇文章主要介绍了JAVA反射机制,包括了Java反射机制的各种应用技巧,非常具有实用价值,需要的朋友可以参考下
    2014-09-09
  • 浅谈Java之Map 按值排序 (Map sort by value)

    浅谈Java之Map 按值排序 (Map sort by value)

    下面小编就为大家带来一篇浅谈Java之Map 按值排序 (Map sort by value)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • MyBatis实现高级映射的示例代码

    MyBatis实现高级映射的示例代码

    高级映射主要还是映射,只是映射中的数据关系复杂了,其中就包括一对一、一对多、多对多的关系,本文主要介绍了MyBatis实现高级映射的示例代码,感兴趣的可以了解一下
    2024-06-06
  • 深入理解Java中的弱引用

    深入理解Java中的弱引用

    这篇文章主要介绍了深入理解Java中的弱引用,本文讲解了强引用、弱引用、引用队列、四种引用、软引用、虚引用等内容,需要的朋友可以参考下
    2015-01-01
  • Mybatis结果集映射与生命周期详细介绍

    Mybatis结果集映射与生命周期详细介绍

    结果集映射指的是将数据表中的字段与实体类中的属性关联起来,这样 MyBatis 就可以根据查询到的数据来填充实体对象的属性,帮助我们完成赋值操作
    2022-10-10
  • Maven项目更换本地仓库过程图解

    Maven项目更换本地仓库过程图解

    这篇文章主要介绍了Maven项目更换本地仓库过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 在maven中引入本地jar包的步骤

    在maven中引入本地jar包的步骤

    这篇文章主要介绍了在maven中引入本地jar包的步骤,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04

最新评论