[转帖]发布策略知多少?蓝绿 / 红黑 / 灰度 / 滚动...

发布,策略,知多少,蓝绿,灰度,滚动 · 浏览次数 : 0

小编点评

## 发布策略详解 **蓝绿发布** 蓝绿发布是一种快速迭代的发布策略,它通过在两个环境 (蓝环境和绿环境) 中进行软件版本升级,并在升级完成后逐步将流量从蓝环境上移到绿环境上。蓝绿发布的优点是: * **低风险:** 通过在两个环境中进行版本升级,可以有效降低系统风险。 * **快速迭代:** 蓝绿发布可以快速迭代需求,使其更适合快速响应市场变化的需求。 * **可观性:** 蓝绿发布可以提供可观性的升级过程,方便调试。 **红黑发布** 红黑发布也是一种快速迭代的发布策略,它通过在两个环境 (红环境和黑环境) 中进行软件版本升级,并将旧版本的资源回收到新版本中。红黑发布的优点是: * **低成本:** 红黑发布的成本更低于蓝绿发布。 * **可扩展性:** 红黑发布可以轻松扩展到多个环境。 **灰度发布** 灰度发布是一种渐进式的发布策略,它通过在多个环境中进行软件版本升级,最终将所有环境都升级到最新版本。灰度发布的优点是: * **可扩展性:** 灰度发布可以轻松扩展到多个环境。 * **减少风险:** 灰度发布可以减少系统风险,因为只发布部分流量到新版本。 **滚动发布** 滚动发布是一种分批式的发布策略,它通过将新的版本部署到多个环境中,并逐步增加流量到新版本上。滚动发布的优点是: * **可扩展性:** 滚动发布可以轻松扩展到多个环境。 * **减少风险:** 滚动发布可以减少系统风险,因为只发布部分流量到新版本。 **总结** 选择合适的发布策略取决于具体的需求。蓝绿发布适用于快速迭代的需求,红黑发布适用于低成本的需求,灰度发布适用于需要降低风险的需求,滚动发布适用于需要可扩展性的需求。

正文

https://my.oschina.net/koderover/blog/5608477

随着市场的快速发展,产研团队需要更快迭代需求、更高频发布变更。但由于无法完全模拟线上流量和真实场景,频繁发布可能导致整个系统风险。当出现一个小问题,就可能导致服务的可用性受损、用户体验甚至客户服务受到影响。而随着云技术和基础架构的成熟,发布过程中可以通过引入相应的发布策略,能让我们在早期实验阶段就可以发现、调整问题,来保证整体系统的稳定性。

目前常见的发布策略有蓝绿发布、红黑发布、金丝雀(灰度)发布、滚动发布等。下面主要介绍这几种发布策略的基本概念和原理,最后介绍如何通过 Zadig 来高效发布变更。

不同的发布策略及特点介绍

蓝绿发布

 

概念定义:蓝绿发布是一种以最小的停机时间做服务升级的策略。 需要维护的两个版本的环境分别称为 “蓝环境” 和 “绿环境”。一般当前生产流量指向环境为绿环境,而在蓝环境上部署新版本,短时间内作为测试环境。

发布流程: 首先将一半的服务流量从负载均衡列表中移除,并且更新服务版本,验证新版本没有问题后,将生产流量指向蓝环境,然后对于老版本的绿环境进行版本升级,最后将所有服务流量加回负载均衡。

 

特点:

  • 升级过程无需停机,用户感知小

  • 升级过程一半资源提供服务

  • 升级 / 回滚速度快

  • 如果出了问题,影响面较广

红黑发布

 

概念定义:与蓝绿发布类似,红黑发布也是通过两个环境完成软件版本的升级,将当前生产流量指向的环境称为红环境,新版本环境称为黑环境。

发布流程:需申请新资源用于部署黑环境,在黑环境部署新版本的服务;黑环境部署完成后,一次性将生产流量指向黑环境;释放红环境的资源。

 

特点:

  • 升级过程无需停机,用户感知小

  • 短时间内需要使用双倍资源

与蓝绿发布相比,红黑发布充分利用了云计算的弹性伸缩的优势,实现:

  • 简化发布流程

  • 避免在升级的过程中,由于只有一半资源提供服务,而导致的系统过载问题

灰度发布

 

概念定义:灰度发布属于增量发布,新老版本同时为用户提供服务。灰度发布的主要目的是保证系统的可用性。每一次的线上变更都无法保证系统 100% 的无 bug,所以变更后要在线上小范围验证,等没问题再全面放开。而金丝雀发布是灰度发布的一种实现。

金丝雀发布由来:以前矿工开矿,在下矿洞前需要检查下方是否有毒气,矿工们先会放一只金丝雀进去探是否有毒气体,看金丝雀能否活下来。

发布流程:在现有环境中部署少量服务的新版本(金丝雀),部署完成后,对线上流量进行监测,如果没有问题就对老版本服务进行全量升级。

 

特点:

  • 用户体验影响小,灰度发布过程出现问题影响范围较小

  • 新版本功能逐步发布,可以逐步评估新版服务性能、稳定性和健康状态

  • 发布自动化程度不够,发布期间可能引发服务中断 

 

滚动发布

 

在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。

 

结合 Zadig 实践

Zadig 企业版推出蓝绿发布、金丝雀发布、分批次灰度等发布任务,下面主要介绍在 Zadig 上如何使用这几个发布任务。

 

蓝绿发布 / 红黑发布

使用条件

所要更新服务的 workload 需要满足以下条件:

  1. workload 需要有一个 service 与之对应,并且 workload  的 labels 包含所有 service 的 selector labels。

  2. workload 当前只支持 deployment 类型。

 

配置蓝绿发布

1. 新建工作流。访问 工作流 ->  新建工作流 -> 选择 发布工作流 。

 

2. 添加部署蓝绿环境任务。点击「+ 任务」,选择「部署蓝绿环境」任务并配置。

 

 

3. [可选] 添加验证任务,验证蓝环境质量是否符合上线要求。点击「+ 任务」,选择「通用任务」任务并配置。

 

 

4. 添加蓝绿发布任务。点击「+ 任务」,选择「蓝绿发布」任务并配置。

 

 

 

5. 点击工作流「保存」按钮,完成工作流配置。

 

执行蓝绿发布

1. 点击「执行」按钮,选择需要更新的实例及镜像。

 
 
 
2. 工作流按照设置的任务完成执行,执行状态如下图所示。
 
 
3. 发布效果如下:
 
 
 

金丝雀发布

使用条件

所要更新服务的 workload 需要满足以下条件:

  1. workload 需要有一个 service 与之对应,并且 workload  的 labels 包含所有 service 的 selector labels。

  2. workload 当前只支持 deployment 类型。

配置金丝雀发布

1. 新建工作流。访问 工作流 -> 新建工作流 -> 选择 发布工作流 。

 

2. 添加部署金丝雀任务。点击「+ 任务」,选择「部署蓝绿环境」任务并配置。

 

 

3. [可选] 添加验证任务,验证金丝雀版本是否符合上线要求。点击「+ 任务」,选择「通用任务」任务并配置。

 

 

4. 配置人工审核。点击「+ 阶段」,开启「人工审核」。

 

5. 添加金丝雀发布任务。点击「+ 任务」,选择「金丝雀发布」并配置。

 

 

6. 点击工作流「保存」按钮,完成工作流配置。

 

执行金丝雀发布

1. 点击「执行」按钮,选择需要更新的实例及镜像。

 

 

2. 工作流完成部署金丝雀和验证任务,等待人工审核。此时环境中已部署 1 个金丝雀实例,如下图所示。

 

 

3. 人工审核通过并完成金丝雀发布。此时环境已更新为金丝雀版本,如下图所示。

 

 

分批次灰度发布

灰度发布有很多种实现方式,除了金丝雀发布,Zadig 还支持分批次灰度发布,按照实际情况,分多次升级线上服务,比如第一次灰度 20%,将生产 20% 流量打入新版本,通过监控观测线上流量情况,第二次灰度 40% ,观测流量,没问题后全量上线。

 

配置灰度发布

1. 新建工作流。访问 工作流 -> 新建工作流 -> 选择 发布工作流 。

 

2. 添加「灰度回滚」任务。点击「+ 任务」,选择「灰度发布」任务并 首个灰度任务 配置。

 

 

3. 添加更多灰度阶段,配置 非首个灰度任务 任务。

 

执行灰度发布

1. 点击「执行」按钮,选择需要灰度的容器及其镜像。

 

 

2. 工作流按照设置的任务完成执行,执行状态如下图所示。

 

 

Zadig,开放,链接,专业。

与[转帖]发布策略知多少?蓝绿 / 红黑 / 灰度 / 滚动...相似的内容:

[转帖]发布策略知多少?蓝绿 / 红黑 / 灰度 / 滚动...

https://my.oschina.net/koderover/blog/5608477 随着市场的快速发展,产研团队需要更快迭代需求、更高频发布变更。但由于无法完全模拟线上流量和真实场景,频繁发布可能导致整个系统风险。当出现一个小问题,就可能导致服务的可用性受损、用户体验甚至客户服务受到影响。而

[转帖]JCE无限制权限策略文件

https://www.cnblogs.com/rinack/p/13648157.html 因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。 对于Java 8 Update 144和更早版本,需要安装J

[转帖]发布即巅峰!万字长文:Java性能调优六大工具:MAT内存分析工具

jianshu.com/p/4ed3dd8b7b83 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况。MAT是 基于Eclipse开发的一款免费的性能分析工具,读者可以在http://www.eclipse.org

[转帖]k8s发布Spring cloud+eureka架构服务优雅启动停止方案

本文转载自昆仑枫的简书https://www.jianshu.com/p/6d393cbb694a Spring cloud+eureka是目前微服务主流解决方案之一,kubernetes则是广泛应用的发布工具,两者结合使用很常见。而两者结合时如何优雅启停从而实现无感发布很关键。下面将从不做特殊处理

[转帖]飞腾发布新一代桌面级处理器腾锐D2000,使用14nm工艺制造

https://baijiahao.baidu.com/s?id=1688392509052524770&wfr=spider&for=pc S2500的供货是一个问题啊. 近日,国内芯片设计厂商天津飞腾发布了新一代桌面级处理器腾锐D2000。关心国内处理器的除了国人,国外的群众也没少看相关消息,连

[转帖]阿里发布自研ARM服务器芯片倚天710,不对外出售

https://www.modb.pro/db/139440 10月19日,阿里巴巴旗下半导体公司平头哥发布自研云芯片倚天710,并宣称该芯片是业界性能最强的ARM服务器芯片,性能超过业界标杆20%,并且,能效也高出业内标杆50%以上。 业界标杆是谁呢?目之所及,从目前云厂商的ARM处理器而言,最成

[转帖]Arm发布CortexX4,功耗可降低40%

https://www.eet-china.com/mp/a224124.html ARM 发布了新一代的移动处理器内核,包括 Cortex-X4、Cortex-A720、Cortex-A520,预计将很快用于骁龙 8 Gen 3 以及天玑 9300 等处理器。值得一提的是,新的核心基于 Arm v

[转帖]Kubernetes 蓝绿发布、ABTest、滚动发布、灰度发布、金丝雀发布简介

蓝绿发布: 一些应用程序只需要部署一个新版本,并需要立即切到这个版本。因此,我们需要执行蓝/绿部署。在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。然后更新应用程序的入口/路由器以切换到新版本(绿)。然后,您需要等待旧(蓝)版本来完成所有发送给它的请求,但是大多数情况下,应

[转帖]Redis进阶(发布订阅,PipeLine,持久化,内存淘汰)

目录 1、发布订阅 1.1 什么是发布订阅 1.2 客户端实例演示 1.3 Java API演示 1.4 Redis发布订阅和rabbitmq的区别 2、批量操作 2.1 普通模式与 PipeLine 模式 2.2 适用场景 2.3 源码解析 2.4 Pipelining的局限性 2.5 事务与 L

[转帖]Intel正式发布第三代至强可扩展处理器,单芯最多可达40核

https://baijiahao.baidu.com/s?id=1673640229820868010&wfr=spider&for=pc 今天晚上Intel正式发布了第三代至强可扩展处理器,也就是说了很久的Ice Lake-SP,这是他们首款10nm工艺的数据中心处理器,现在个处理器最多拥有40