蓝绿发布、灰度发布(金丝雀发布) 和滚动发布
蓝绿发布、灰度发布(金丝雀发布) 和滚动发布
应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。
长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布、灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题。
1. 蓝绿发布
1.1 实现原理
1)项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。
2) 当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务。
3) 最后,B组也升级完成,负载均衡重新接入B组,此时,AB组版本都已经升级完成,并且都对外提供服务。
1.2 特点
- 如果出问题,影响范围较大;
- 发布策略简单;
- 用户无感知,平滑过渡;
- 升级/回滚速度快。
1.3 缺点
- 需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发;
- 短时间内浪费一定资源成本;
- 基础设施无改动,增大升级稳定性。
蓝绿发布在早期物理服务器时代,还是比较昂贵的,由于云计算普及,成本也大大降低。
2. 灰度发布(金丝雀发布)
2.1 实现原理
灰度发布只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。
2.2 特点
- 保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;
- 新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;
- 用户无感知,平滑过渡。
2.3 缺点
自动化要求高
2.4 部署过程
- 从LB摘掉灰度服务器,升级成功后再加入LB;
- 少量用户流量到新版本;
- 如果灰度服务器测试成功,升级剩余服务器。
灰度发布是通过切换线上并存版本之间的路由权重,逐步从一个版本切换为另一个版本的过程。
3. 滚动发布
3.1 实现原理
滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
- 红色:正在更新的实例
- 蓝色:更新完成并加入集群的实例
- 绿色:正在运行的实例
3.2 特点
- 用户无感知,平滑过渡;
- 节约资源。
3.3 缺点
- 部署时间慢,取决于每阶段更新时间;
- 发布策略较复杂;
- 无法确定OK的环境,不易回滚。
3.4 部署过程
- 先升级1个副本,主要做部署验证;
- 每次升级副本,自动从LB上摘掉,升级成功后自动加入集群;
- 事先需要有自动更新策略,分为若干次,每次数量/百分比可配置;
- 回滚是发布的逆过程,先从LB摘掉新版本,再升级老版本,这个过程一般时间比较长; 自动化要求高。
4. 小结
综上所述,三种方式均可以做到平滑式升级,在升级过程中服务仍然保持服务的连续性,升级对外界是无感知的。
那生产上选择哪种部署方法最合适呢?这取决于哪种方法最适合你的业务和技术需求。
- 如果运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布;
- 如果业务对用户依赖很强,建议灰度发布;
- 如果是K8S平台,滚动更新是现成的方案,建议先直接使用。
蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。
灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。
滚动发布:按批次停止老版本实例,启动新版本实例。
原文地址:https://mp.weixin.qq.com/s?__biz=MzAwNTM5Njk3Mw==&mid=2247495129&idx=1&sn=6ecc1e69c647df365be3f7b92b858c72&chksm=9b1fed5bac68644d5f5b059aa0c9425a22d8e0d669f09b7f7bf5b35fb9dcfcdae771fac9ae5e&mpshare=1&scene=23&srcid=0211stGZXyDNOY6vP35eeZ57&sharer_sharetime=1613019692245&sharer_shareid=874b87929c17020edadbcebae32b2e39#rd
蓝绿发布、灰度发布(金丝雀发布) 和滚动发布相关推荐
- kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新
在项目迭代的过程中,不可避免需要上线进行部署. 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新.本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新 ...
- 发版模式(蓝绿、灰度、滚动)简单原理
蓝绿部署用的就比较少了,太浪费资源.滚动发布和灰度发布其实都可以用矿工(用户)下井(使用的版本)来理解,旧矿井(旧版本)和新矿井(新版本).滚动发布就是发现新矿井,直接让矿工排队下新矿井,结果瓦斯浓度 ...
- 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别
在有关微服务.DevOps.Cloud-native.系统部署等的讨论中,蓝绿部署.A/B 测试.灰度发布.滚动发布.红黑部署等概念经常被提到,它们有什么区别呢?通过搜索相关资料,做一个简单的辨析,如 ...
- 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...
更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...
- 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...
蓝绿部署.红黑部署.AB测试.灰度发布.金丝雀发布.滚动发布的概念与区别 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangyinghong_2 ...
- 线上发版如何做到分批发的?详解蓝绿部署,滚动升级,A/B 测试,灰度发布/金丝雀发布
过去的 10 年里,很多大公司都在使用蓝绿部署,安全.可靠是这种部署方式的特点.蓝绿部署虽然算不上" Sliver Bullet ",但确实很实用.在有关于"微服务&qu ...
- 科普:蓝绿部署、金丝雀发布(灰度发布)、A/B测试
蓝绿部署(Blue-green Deployments) 蓝绿部署的目的是减少发布时的中断时间.能够快速撤回发布. It's basically a technique for releasing y ...
- 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义
作者: 李佶澳 转载请保留:原文地址 发布时间:2018/10/23 14:02:00 说明 蓝绿部署 金丝雀发布 A/B测试 参考 说明 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量 ...
- 【项目实战】正确辨析蓝绿部署、金丝雀发布(灰度发布)、滚动发布、A/B测试
一.背景 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量切分等,经常被混为一谈,影响沟通效率. 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致. 下面是从 ...
- 微服务部署:蓝绿部署、滚动部署、灰度部署(金丝雀部署)、功能开关发布
简介 产品或项目不可能一步到位,一次性推向用户,故而有版本的存在.在app版本更新或者项目迭代的过程中,不可避免需要发布.发布就是部署:部署就是修改:修改则意味着风险. 目前有很多用于部署的技术,本文 ...
最新文章
- 借“样式”巧用Word自带的多级项目符号!
- python下载安装教程3.8.1-Linux安装Python 3.8.1
- 手机客户端连接linux
- python输入多个数据存入列表_python怎么把input的值储存到一个列表
- SAP WebIDE一个和Destination相关的问题 - OData下拉菜单里的Destination从哪里来的
- python编程中条件句_简单讲解Python编程中namedtuple类的用法
- 【IMX6ULL笔记】--内核底层驱动初步探究
- C# WPF MVVM 实战 - 2.1
- 文字-汉字-生僻字:生僻字1
- WPF无边框窗体拖动
- 为了下一代,抖音真的该关了---读<<我观察到的牛人有这三个特质>>有感
- C++中string类下的begin,end,rbegin,rend的用法
- python是微软开发的吗_Python是如何在微软发展壮大的
- 通信网基础缩略语集合
- 基于stm32的物联网、智能家居控制系统
- Python-OpenCV图像处理(二):模糊操作
- SQL视图View的总结和使用
- Squeezenet官方源代码解析
- 在上海软件行业,我见到的年入50万的众生相——我们该如何努力从而达到这个目标...
- 半个月零基础可以过计算机二级吗,2018年9月计算机二级考试“零基础”通关计划...