一文搞懂蓝绿发布、灰度发布和滚动发布

一文搞懂蓝绿发布、灰度发布和滚动发布

 

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。

长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布、灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题。

一、 蓝绿发布

项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。  

 

当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务。  

 

 

最后,B组也升级完成,负载均衡重新接入B组,此时,AB组版本都已经升级完成,并且都对外提供服务。

特点

  • 如果出问题,影响范围较大;

  • 发布策略简单;

  • 用户无感知,平滑过渡;

  • 升级/回滚速度快。

缺点

  • 需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发;

  • 短时间内浪费一定资源成本;

  • 基础设施无改动,增大升级稳定性。

 

蓝绿发布在早期物理服务器时代,还是比较昂贵的,由于云计算普及,成本也大大降低。

二、 灰度发布

灰度发布只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。

特点

  • 保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;

  • 新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;

  • 用户无感知,平滑过渡。

缺点

  • 自动化要求高

部署过程

  • 从LB摘掉灰度服务器,升级成功后再加入LB;

  • 少量用户流量到新版本;

  • 如果灰度服务器测试成功,升级剩余服务器。

 

灰度发布是通过切换线上并存版本之间的路由权重,逐步从一个版本切换为另一个版本的过程。

三、 滚动发布

滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。 

 

  • 红色:正在更新的实例

  • 蓝色:更新完成并加入集群的实例

  • 绿色:正在运行的实例

特点

  • 用户无感知,平滑过渡;

  • 节约资源。

缺点

  • 部署时间慢,取决于每阶段更新时间;

  • 发布策略较复杂;

  • 无法确定OK的环境,不易回滚。

部署过程

  • 先升级1个副本,主要做部署验证;

  • 每次升级副本,自动从LB上摘掉,升级成功后自动加入集群;

  • 事先需要有自动更新策略,分为若干次,每次数量/百分比可配置;

  • 回滚是发布的逆过程,先从LB摘掉新版本,再升级老版本,这个过程一般时间比较长;

  • 自动化要求高。

小结

综上所述,三种方式均可以做到平滑式升级,在升级过程中服务仍然保持服务的连续性,升级对外界是无感知的。那生产上选择哪种部署方法最合适呢?这取决于哪种方法最适合你的业务和技术需求。如果你们运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布,如果业务对用户依赖很强,建议灰度发布。如果是K8S平台,滚动更新是现成的方案,建议先直接使用。

  • 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。

  • 灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。

  • 滚动发布:按批次停止老版本实例,启动新版本实例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVelocity标签设置缓存的解决方案

意外的问题总会让人措手不及,今天与大家分享的就是NVelocity设置缓存的问题,之前刚google了一下发现没什么太好的解决方案,希望在这能为需要的朋友找出满意的答案,上一篇blog刚说了NVelocity的用法,这就不在重复了&…

java成员方法的一般格式为_Java基本知识(四)

一、二维数组1、定义方式m:代表当前二维数组中有多少个一维数组;n:代表每个一维数组的长度(1)数据类型[][] 数组名new 数据类型[m][n](2)数据类型[][] 数组名new 数据类型[m][ ],只给定m个一维数组,每个一维数组长度动…

免费的定时任务托管 clock.sh

自己有很多定时任务要跑,所以之前搞了一个定时运行的系统。 在 V2EX 看到很多有类似需求的朋友: https://www.v2ex.com/t/252810https://www.v2ex.com/t/448726https://www.v2ex.com/t/579740https://www.v2ex.com/t/241229https://hk.v2ex.com/t/1134…

vCenter Server Appliance(VCSA )6.7部署指南

VCSA 6.7版本于2018年4月17日提供下载,同时发布的还有ESXi 6.7,根据官方文档,6.7版本升级主要为了发布vSAN 6.7版本。 第1步,下载VMware-VCSA-all-6.7.0-8217866文件,用虚拟光驱挂载或者解压运行,选择“安…

Ansible无敌详细入门教程

Ansible 是什么 ? ansible架构图 ansible特性 模块化:调用特定的模块,完成特定的任务; 基于Python语言研发,由Paramiko, PyYAML和Jinja2三个核心库实现; 部署简单:agentless; 支持自定义模…

Nginx学习笔记(五) 源码分析内存模块内存对齐

Nginx源码分析&内存模块 今天总结了下C语言的内存分配问题,那么就看看Nginx的内存分配相关模型的具体实现。还有内存对齐的内容~~不懂的可以看看~~ src/os/unix/Ngx_alloc.h&Ngx_alloc.c 先上源码: /** Copyright (C) Igor Sysoev* Copyright (C…

reactor p java_Java反应式框架Reactor中的Mono和Flux

1. 前言最近写关于响应式编程的东西有点多,很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼,所以今天我们就…

Visual Studio 20xx试用版升级为正式版(WIN7同样有效)图解、附带序列号

Visual Studio 2005|2008 试用版升级为正式版(WIN7同样有效)。 目录 一、步骤图解 二、win7破解工具下载 三、序列号 一、步骤图解 1.控制面板 > 程序和功能 > Visual Studio 2005|2008 启动、修复程序。如图: 2.填写序列号&#xff0…

NHibernate使用之详细图解

本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看,这些都是容易忽略和出错的地方,笔者在此给大家…

disabling directory browsing

2019独角兽企业重金招聘Python工程师标准>>> I have seen several recommendation to increase web application security by disabling directory browsing (for example pg 388 in IBM WebSphere Deployment and Advanced Configuration by Barcia, Hines, et al)…

水印生成器第2版[原图质量水印可自定义设置]

简介:水印生成器,原理很简单,一时在网上没有找到打水印的网站,自己便做了一个,效果如下图,可自定义字体大小、字体类型以及颜色。 开发环境:vs 2010 [net 3.5 WindowsForms应用程序] 本文带给…

服务发现与负载均衡traefik ingress

ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由 Ingress controller 提供 …

GentleNet使用之详细图解[语法使用增强版]

目录第一章 开发环境第二章 简介第三章 Gentle.Net-1.5.0 下载文件包介绍第四章 使用步骤第五章 源码下载 第一章、开发环境:Vs 2010 Sql 2005 GentleNet 1.5.0 【Web网站程序 .Net Framework 3.5】第二章、简介:Gentle.Net是一个开源的优秀O/R M…

NBear简介与使用图解

NBear简介与使用图解框架类型:ORM映射框架简介:NBear是一个基于.Net 2.0、C#2.0开放全部源代码的的软件开发框架类库。NBear的设计目标是尽最大努力减少开发人员的工作量,最大程度提升开发效率,同时兼顾性能及可伸缩性。Demo版本&…

搭建私有helm仓库及图形界面

搭建私有helm仓库及图形界面 本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建 helm chart 能够很好的封装和管理我们的 kubernetes 应用,可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓…

神啊,6小时30分钟,完成想要的所有Lync测试

神啊 !记住这个日子 !从未想到,6小时30分钟,能做出这么多东西:从:2013-06-28---20:00到2013-06-29-----2:30 (辛苦,也是值得,客户是上帝,公司也好,个人也罢&a…

SubSonic框架使用图解

简介:SubSonic框架是一个优秀的、开源的ORM映射框架,同时提供符合自身需要的代码生成器。 官方下载地址:http://www.subsonic.org/pages/download.jsp 明白了SubSonic是什么之后,下面一起来看SubSonic的使用吧。 开发版本&#…

用户代理de疑惑

2019独角兽企业重金招聘Python工程师标准>>> 在计算机科学中,用户代理(英语:User Agent)指的是代表使用者行为的软件(软件代理程序)所提供的对自己的一个标识符。例如,一个电子邮件阅…

问题“The connection to the server....:6443 was refused - did you specify the right host or port?”的处理!

问题“The connection to the server <master>:6443 was refused - did you specify the right host or port?”的处理&#xff01; 一、故障产生 在不关闭kubernets相关服务的情况下&#xff0c;对kubernets的master节点进行重启。&#xff08;模拟服务器的异常掉电&a…

iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)

CodeHelper是一款可以自己定义模板和生成内容的代码生成器&#xff0c;目前只支持MsSql数据库&#xff0c;这款代码生成器的初衷也只是为了生成MyBatis.net框架的配置文件而写的一个轻量级的代码生成器。CodeHelper下载文件包介绍&#xff1a;Template\... 存放模板文件夹&…