概述

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

  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. 成本较高,需要部署两套环境(蓝/绿)。新版本出现问题,切换不及时,会造成部分故障

灰度发布

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

  1. 概念

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

滚动发布

  1. 概念

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

  1. 实施图

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

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

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

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

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

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

  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极限压测,报告如下


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

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

灰度发布框架Discovery介绍相关推荐

  1. Knative 基于流量的灰度发布和自动弹性实践

    作者| 李鹏(元毅) 来源 | 阿里巴巴云原生公众号 Knative Knative 提供了基于流量的自动扩缩容能力,可以根据应用的请求量,在高峰时自动扩容实例数:当请求量减少以后,自动缩容实例,做到 ...

  2. Knativa 基于流量的灰度发布和自动弹性实践

    简介:Knative 提供了基于流量的自动扩缩容能力,可以根据应用的请求量,在高峰时自动扩容实例数:当请求量减少以后,自动缩容实例,做到自动化地节省资源成本.此外,Knative 还提供了基于流量的灰 ...

  3. 灰度发布 java_当我们说做灰度发布的时候我们在做什么

    现在对于稳定性的要求越来越高,同时在维护的应用中有一个正在进行迁移,需要采取一些措施来实现平稳升级和迁移.采用灰度发布是一个可行的方案. 什么是灰度发布 百度百科上的解释是这样的 灰度发布是指在黑与白 ...

  4. 11、Nepxion Discovery 之全链路界面操作蓝绿灰度发布

    在之前的文章中讲过,用户可以通过 URL 请求以及配置中心进行灰度发布的操作,而且支持配置中心的灰度发布参数的动态变更.如果用户不希望使用上面的两种方式,Nepxion Discovery 框架还支持 ...

  5. 1、Nepxion Discovery:Spring Cloud灰度发布神器

    原文地址:http://dockone.io/article/8149 Nepxion Discovery是一款对Spring Cloud服务注册发现和负载均衡的增强中间件,其功能包括灰度发布(包括切 ...

  6. 什么是灰度发布?灰度发布方式 系统的割接 灰度部署典型的框架架构

    什么是灰度发布?http://djt.qq.com/article/view/16   灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.AB  test就是一种灰度发布方式,让一部用户继续用A, ...

  7. Spring Cloud(十四):微服务灰度发布 --- Discovery

    灰度发布 微服务全链路灰度 全链路灰度设计思路 标签路由 节点打标 流量染色 分布式链路追踪 ThreadLocal 流量治理平台 Nacos 配置中心 全链路灰度实现 Discovery 使用 一. ...

  8. 灰度发布与滚动发布、蓝绿发布介绍

    文章目录 灰度发布与滚动发布.蓝绿发布介绍 一.灰度发布与滚动发布.蓝绿发布介绍 1.蓝绿部署 2.滚动发布 3.灰度发布 二.灰度发布好处 三.Gitee上高热度的开源灰度发布系统 四.安装使用 灰 ...

  9. 蓝绿部署、滚动部署、灰度发布、金丝雀发布-概念介绍---应用部署001

    在项目迭代的过程中,不可避免需要"上线".上线对应着部署,或者重新部署:部署对应着修改:修改则意味着风险. 目前有很多用于部署的技术,有的简单,有的复杂:有的得停机,有的不需要停机 ...

最新文章

  1. 千万别中招!手把手教你复现Log4j2漏洞!
  2. SSL连接并非完全问题解决
  3. 影视,高清 音乐 工具
  4. 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值
  5. Jekyll 使用入门
  6. 1.6解不等式 1.6.1 平方根不等式
  7. 1295. 统计位数为偶数的数字
  8. JDK API文档下载
  9. html em vw,rem em 与vh vw的用法简单介绍
  10. 中国IP网通IP地址段
  11. ROS安装教程(ubuntu16.04安装ROS Kinetic)
  12. 矩阵快速幂(推导+模板+例题详解)
  13. Go 处理PCAP文件
  14. 优盘在计算机上无法显示,U盘在电脑上不显示的原因
  15. 计算机图形学中划线的程序,计算机图形学划线实验报告
  16. 常微分方程I ODE的例子3 生态学模型:Malthus增长模型、Lotka-Volterra模型
  17. 人活着到底为了什么?
  18. 展望2019年:未来一年的WordPress
  19. java如何解压rar文件怎么打开,Java压缩与解压rar文件
  20. 干货分享:实用/高效/有逼格的Android Studio 常用配置/插件推荐

热门文章

  1. python请输入星期几的第一个字母来判断_【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母...
  2. 马士兵Python基础版2020教程P58-P96 PPT笔记+课堂代码
  3. 04741<计算机网络原理> 之第一章计算机网络概述
  4. 6 如何保障项目按期完工? 人人都是项目经理系列(第6/13篇)
  5. ▲ Android 签到打卡效果
  6. 电路实验——实验三 叠加原理
  7. 大唐豪侠 -架构开发纪实
  8. TouchDesigner学习 -TOPs
  9. h264中的pps和sps
  10. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身