springboot+nacos+gateway实现灰度发布

概要

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

  • 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行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

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值