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

相关文章

  • jmeter如何自动生成测试报告

    jmeter如何自动生成测试报告

    这篇文章主要介绍了jmeter如何自动生成测试报告,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 通过FeignClient调用微服务提供的分页对象IPage报错的解决

    通过FeignClient调用微服务提供的分页对象IPage报错的解决

    这篇文章主要介绍了通过FeignClient调用微服务提供的分页对象IPage报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 关于Java的二叉树、红黑树、B+树详解

    关于Java的二叉树、红黑树、B+树详解

    这篇文章主要介绍了关于Java的二叉树、红黑树、B+树详解,能同时具备数组查找快的优点以及链表插入和删除快的优点的数据结构就是树,需要的朋友可以参考下
    2023-05-05
  • Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案

    Idea启动SpringBoot程序报错:Veb server failed to&nbs

    这篇文章主要介绍了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Spring Cloud Eureka(全面解析) 大白话

    Spring Cloud Eureka(全面解析) 大白话

    这篇文章主要介绍了Spring Cloud Eureka(全面解析) 大白话,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java使用正则表达式(regex)匹配中文实例代码

    Java使用正则表达式(regex)匹配中文实例代码

    本文给大家分享java使用正则表达式匹配中文的实例代码,以及java中要匹配中文的正则表达式两种写法,感兴趣的朋友通过本文一起看看吧
    2016-12-12
  • Java基础之垃圾回收机制详解

    Java基础之垃圾回收机制详解

    这篇文章主要介绍了Java基础之垃圾回收机制详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • SpringBoot容器的主要组件详解

    SpringBoot容器的主要组件详解

    这篇文章主要介绍了SpringBoot容器的主要组件详解,SpringBoot 是基于 Spring Framework 的一种快速开发框架,它可以帮助开发者快速地构建独立的、生产级别的、可部署的应用程序,需要的朋友可以参考下
    2023-09-09
  • java启动如何设置JAR包内存大小

    java启动如何设置JAR包内存大小

    这篇文章主要介绍了java启动如何设置JAR包内存大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 如何用Java模拟XN*2图灵机

    如何用Java模拟XN*2图灵机

    这篇文章主要介绍了如何用Java模拟XN*2图灵机方法,感兴趣的朋友可以参考下
    2021-04-04

最新评论