灰度发布框架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过滤等组件进行了全方位增强的开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征。

原理图

灰度发布框架Discovery介绍_第1张图片
因为他是通过配置中心下发灰度配置,所以不需要额外引入控制台,只需要在应用的业务配置中增加灰度配置即可。

概念说明

蓝绿发布

蓝绿发布 Blue-Green Deployment

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

灰度发布框架Discovery介绍_第2张图片

灰度发布

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

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

灰度发布框架Discovery介绍_第3张图片

滚动发布

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

灰度发布框架Discovery介绍_第4张图片

  1. 实施图

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

使用场景,图中文字描述很清楚
灰度发布框架Discovery介绍_第5张图片

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

使用场景,图中文字描述很清楚灰度发布框架Discovery介绍_第6张图片

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

使用场景,图中文字描述很清楚灰度发布框架Discovery介绍_第7张图片

  1. 性能测试报告

    1. 准备两台机器部署Spring Cloud应用
    2. 准备一台机器部署网关(Spring Cloud或者Zuul)
    3. 准备一台机器部署压测工具
    服务 配置 数目
    Spring cloud gateway 16c 32G 1
    Zuul 1.x 16c 32G 1
    Service 4c 8G 2
    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极限压测,报告如下

灰度发布框架Discovery介绍_第8张图片
压测报告可见对应用资源效果基本在0.3%到0.5%之间,可以忽略不计。

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

你可能感兴趣的:(灰度发布,Discovery,灰度发布,spring,cloud)