灰度发布框架Discovery介绍

概述

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。

  1. 可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

  2. 降低产品升级所影响的用户范围

在前几篇的章节写了spring-cloud-gray的灰度框架介绍,但是为了做一下对比,我们对Discovery有进行了详细的调研,git地址:https://github.com/Nepxion/Discovery
此框架对Spring Cloud & Spring Cloud Alibaba,Discovery服务注册发现、Ribbon负载均衡、Feign和 RestTemplate调用、Spring Cloud Gateway和Zuul过滤等组件进行了全方位增强的开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征。

原理图

在这里插入图片描述
因为他是通过配置中心下发灰度配置,所以不需要额外引入控制台,只需要在应用的业务配置中增加灰度配置即可。

概念说明

蓝绿发布

蓝绿发布 Blue-Green Deployment

  1. 概念
    1. 不停机旧版本,部署新版本,通过用户标记将流量在新版本和老版本切换,属无损发布
  2. 优点
    1. 新版本升级和老版本回滚迅速。用户可以灵活控制流量走向
  3. 缺点
    1. 成本较高,需要部署两套环境(蓝/绿)。新版本出现问题,切换不及时,会造成部分故障

img

灰度发布

灰度发布 Gray Release(又名金丝雀发布 Canary Release)

  1. 概念
    1. 不停机旧版本,部署新版本,低比例流量(例如:5%)切换到新版本,高比例流量(例如:95%)走旧版本,通过监控观察无问题, 逐步扩大范围,最终把所有流量都迁移到新版本上,下线旧版本。属无损发布
  2. 优点
  3. 灵活简单,不需要用户标记驱动。安全性高,新版本如果出现问题,只会发生在低比例的流量上
  4. 缺点
  5. 流量配比递增的配置修改,带来额外的操作成本。用户覆盖狭窄,低比例流量未必能发现所有问题

img

滚动发布

  1. 概念
    1. 每次只升级一个或多个服务,升级完成监控观察,不断执行这个过程,直到集群中的全部旧版本升级到新版本。停止旧版本的过程 中,无法精确计算旧版本是否已经完成它正在执行的工作,需要靠业务自身去判断。属有损发布
  2. 优点
    1. 出现问题影响范围很小,只会发生在若干台正在滚动发布的服务上
  3. 缺点
    1. 发布和回滚需要较长的时间周期。按批次停止旧版本,启动新版本,由于旧版本不保留,一旦全部升级完毕后才发现问题,则无法快速回滚,必须重新降级部署

img

  1. 实施图

    1. 全链路域网关并行蓝绿灰度发布

使用场景,图中文字描述很清楚
img

  1. 全链路非域网关并行蓝绿灰度发布

使用场景,图中文字描述很清楚img

  1. 全链路全局订阅下并行蓝绿灰度发布

使用场景,图中文字描述很清楚img

  1. 性能测试报告

    1. 准备两台机器部署Spring Cloud应用
    2. 准备一台机器部署网关(Spring Cloud或者Zuul)
    3. 准备一台机器部署压测工具
    服务配置数目
    Spring cloud gateway16c 32G1
    Zuul 1.x16c 32G1
    Service4c 8G2
    1. 优化方式
    • Spring Cloud Gateway,不需要优化
    • Zuul 1.x,优化如下:
    zuul.host.max-per-route-connections=1000 
    
    zuul.host.max-total-connections=1000 
    
    zuul.semaphore.max-semaphores=5000
    
    1. 基于WRK极限压测,报告如下

img
压测报告可见对应用资源效果基本在0.3%到0.5%之间,可以忽略不计。

官方文档写的非常详细读者可以参考官方文档。


版权声明:本文为dweizhao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。