灰度部署、滚动部署与蓝绿部署

2024-04-13 15:52
文章标签 部署 滚动 灰度 蓝绿

本文主要是介绍灰度部署、滚动部署与蓝绿部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近在进行单元化建设方面的的工作,其中涉及服务分组和蓝绿发布相关的概念,在这里总结一下了解到的相关知识。

版本更新策略

功能开关

在应用逻辑里内置功能开关,通过开关的打开关闭来决定执行新旧逻辑,无需路由机制支持,开发人员可以灵活的控制程序的表现。这种方式需要动态配置中心的支持,目前业界已经有比较完善的解决方案,比如Apollo、spring cloud config等等。具体的方式类似这样:

if Config.SwitchOn {//new logic
} else {//old logic
}

功能开关的方式虽然简单直观,但是随着版本的更新需要经常清理过期配置,维护成本比较高。

灰度部署/金丝雀部署

灰度部署是指先更新一小部分服务器比如2%,然后对应用进行测试验证。如果验证通过,则继续更新剩余部分的服务器,否则进行回滚。灰度部署的好处就是影响面小,出现问题时只会影响很小一部分用户,适合对新功能信心不足或是对服务可用性要求比较高的场景。
在这里插入图片描述

滚动部署

滚动部署更像是灰度部署的增强版,当新版本经过灰度验证通过之后,我们逐渐增大灰度部署的范围,直到全部的服务器都更行到新版本。在部署过程中需要支持平滑切换,即先把服务器从负载均衡列表中摘除;此外滚动发布通常是分批次的,比如第一批10%,第二批30%,第三批100%等等。
滚动部署相比灰度部署,需要自动化部署工具以及完善的路由机制支持,这样才能保证用户体验足够平滑;此外滚动部署比起灰度部署的发布和回滚时间也会更长。
在这里插入图片描述

蓝绿部署

蓝绿部署技术是指同时维护两套相同的生产环境,我们可以称之为蓝色环境和绿色环境,而只有一个颜色的环境负责提供完整的服务,另一个环境则完全空闲。当我们需要部署新版本的服务时,我们先在空闲的环境进行部署和验证,当验证完毕后,通过操作路由将客户端流量切换至新版本的环境,而原先的环境则变为空闲环境,依次循环交替。
在这里插入图片描述
要实现蓝绿部署,需要几个额外支持:

  1. 完善的、操作成本低的路由控制机制,运维人员可以动态地进行流量切换
  2. 冗余资源,任意时刻其中一个环境的资源是闲置的。当然我们可以把闲置的环境作为预发验证环境,或者把删除一部分空闲环境的资源,等下次发布时再扩充资源

蓝绿部署的好处:

  1. 可以降低停机时间,我们的生产环境几乎没有停机时间,切换在很短的时间内即可完成
  2. 可以快速回滚,当新功能不符合预期是我们只需要将流量切换回上一个版本的环境即可
  3. 可以提高灾备能力,当一个环境出现问题时我们可以迅速切换到另一个可用的环境。实际上每次发布都相当于进行了一次灾备切换

蓝绿部署的不足:

  1. 资源利用率不足,因为一般的资源是闲置的
  2. 当流量切换完毕之后,可能在后端仍有业务逻辑没有处理完毕,需要额外的机制保证。你可以在设计时就保证两个环境可以同时处理事务,这样就不需要考虑这个问题了;也可以在切换流量前先将服务设置为“只读模式”,流量切换完毕再回到“读写模式”等等。
  3. 新旧版本可能会涉及数据库表结构的变化,这时我们需要额外的数据库兼容措施。当切换到新的环境发生问题时,可能会因为新的逻辑导致数据差异。要解决这种问题可以将数据库重构与应用发布分开:先进行数据库重构以保证新旧版本兼容,数据库重构完毕后再进行应用发布。

其他概念

单服务器组合双服务器组

前面提到的蓝绿部署需要两个环境,实际上就相当于双服务器组。二灰度部署和滚动部署也可以用于双服务器组。比如双服务器组中的灰度部署就是在蓝绿环境切换时不是一刀切,而是先切换一小部分到新环境,验证通过后再全量切换到新环境;而滚动部署在双服务器组中就是分批次切换到新环境。

服务器组

在进行服务器组划分时,可以有不同程度的划分:根据数据中心划分,比如A机房为一组、B机房为一组;根据逻辑分组划分,比如A、B机房的一半机器分为一组、剩下的另一半机器分为一组。无论如何分组,请求在服务之间传递时都是需要识别某个机器的分组标识的,比如在注册中心中服务实例的元数据里需要有类似"group=group1"这样的标识,这样客户端或者代理节点在进行路由时才能识别服务端实例所在的分组。

路由机制

前面提到的各种部署策略,实际上都需要不同程度的路由机制支持。对于HTTP服务可以使用代理节点的方式,在域名解析过程中分发到不同的下游节点;RPC服务则需要实现配套的路由机制了。

这篇关于灰度部署、滚动部署与蓝绿部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900569

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台运行的意思;&才是后台运行在缺省情况下该作业的所有输出都被重定向到一个名为nohup.o

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4