发布模式

简介: 蓝绿部署是一种减少发布中断的策略,通过维护两套系统(绿为线上,蓝为新版本)实现快速切换与回滚。金丝雀发布则逐步替换旧系统,适用于大规模集群。A/B测试用于比较不同版本效果,非发布策略。三者各有适用场景。

蓝绿部署
蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。
It’s basically a technique for releasing your application in a predictable manner with an goal of reducing any downtime associated with a release. It’s a quick way to prime your app before releasing, and also quickly roll back if you find issues.
蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。
最初,没有任何系统,没有蓝绿之分。
然后,第一套系统开发完成,直接上线,这个过程只有一个系统,也没有蓝绿之分。
后来,开发了新版本,要用新版本替换线上的旧版本,在线上的系统之外,搭建了一个使用新版本代码的全新系统。 这时候,一共有两套系统在运行,正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统。
蓝色系统不对外提供服务,用来做啥?
用来做发布前测试,测试过程中发现任何问题,可以直接在蓝色系统上修改,不干扰用户正在使用的系统。(注意,两套系统没有耦合的时候才能百分百保证不干扰)
蓝色系统经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户切换到蓝色系统:
切换后的一段时间内,依旧是蓝绿两套系统并存,但是用户访问的已经是蓝色系统。这段时间内观察蓝色系统(新系统)工作状态,如果出现问题,直接切换回绿色系统。
当确信对外提供服务的蓝色系统工作正常,不对外提供服务的绿色系统已经不再需要的时候,蓝色系统正式成为对外提供服务系统,成为新的绿色系统。 原先的绿色系统可以销毁,将资源释放出来,用于部署下一个蓝色系统。
蓝绿部署只是上线策略中的一种,它不是可以应对所有情况的万能方案。 蓝绿部署能够简单快捷实施的前提假设是目标系统是非常内聚的,如果目标系统相当复杂,那么如何切换、两套系统的数据是否需要以及如何同步等,都需要仔细考虑。
BlueGreenDeployment中给出的一张图特别形象:
金丝雀发布
金丝雀发布(Canary)也是一种发布策略,和国内常说的灰度发布是同一类策略。
蓝绿部署是准备两套系统,在两套系统之间进行切换,金丝雀策略是只有一套系统,逐渐替换这套系统。
譬如说,目标系统是一组无状态的Web服务器,但是数量非常多,假设有一万台。
这时候,蓝绿部署就不能用了,因为你不可能申请一万台服务器专门用来部署蓝色系统(在蓝绿部署的定义中,蓝色的系统要能够承接所有访问)。
可以想到的一个方法是:
只准备几台服务器,在上面部署新版本的系统并测试验证。测试通过之后,担心出现意外,还不敢立即更新所有的服务器。 先将线上的一万台服务器中的10台更新为最新的系统,然后观察验证。确认没有异常之后,再将剩余的所有服务器更新。
这个方法就是金丝雀发布。
实际操作中还可以做更多控制,譬如说,给最初更新的10台服务器设置较低的权重、控制发送给这10台服务器的请求数,然后逐渐提高权重、增加请求数。
这个控制叫做“流量切分”,既可以用于金丝雀发布,也可以用于后面的A/B测试。
蓝绿部署和金丝雀发布是两种发布策略,都不是万能的。有时候两者都可以使用,有时候只能用其中一种。
上面的例子中可以用金丝雀,不能用蓝绿,那么什么时候可以用蓝绿,不能用金丝雀呢?整个系统只有一台服务器的时候。
A/B测试
首先需要明确的是,A/B测试和蓝绿部署以及金丝雀,完全是两回事。
蓝绿部署和金丝雀是发布策略,目标是确保新上线的系统稳定,关注的是新系统的BUG、隐患。
A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。
A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。
A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。

相关文章
|
1天前
|
弹性计算 缓存 关系型数据库
高并发场景实战:基于SLB+ECS+RDS的弹性架构设计
基于阿里云SLB+ECS+RDS构建弹性高并发架构,实现流量分发、自动伸缩与数据高可用。通过多级缓存、无状态设计、读写分离及全链路压测优化,有效应对流量洪峰,保障系统高性能与稳定性,助力业务平稳扩展。(238字)
|
1天前
|
存储 缓存 监控
网站性能飞跃:深度优化OSS+CDN+全站加速DCDN的最佳实践
本文深入解析如何通过阿里云OSS、CDN与DCDN的协同优化,构建高性能内容分发体系。从静态资源存储加速到动态请求智能路由,结合缓存策略、协议优化与实时监控,实现网站全链路性能飞跃,助力业务赢得速度竞争。
|
1天前
|
运维 Kubernetes 微服务
微服务上云:基于ACK Kubernetes集群的容器化部署全流程
本文详解基于阿里云容器服务ACK的微服务容器化全流程,涵盖架构设计、集群搭建、应用编排、安全部署与可观测性实践,提供从本地到云端的落地指南,助力企业构建高弹性、高可用的云原生生产环境。
|
1天前
|
传感器 数据采集 人工智能
智慧农业物联网:传感器数据上云、可视化与智能预警系统搭建
本文介绍智慧农业物联网系统三大核心:传感器数据上云、可视化展示与智能预警。涵盖传感组网、云平台对接、多维可视化及AI预警机制,结合LoRa、4G、MQTT等技术,实现精准灌溉、降本增效,推动农业数字化转型。(238字)
|
1天前
|
SQL 关系型数据库 数据库
数据库性能调优:如何利用CloudDBA让RDS查询效率提升300%?
在高并发场景下,数据库性能常成瓶颈。阿里云CloudDBA通过智能诊断与优化,助力RDS实现查询效率提升300%。本文详解其四步定位法、三大实战优化场景及闭环验证体系,推动数据库调优从“被动救火”迈向“主动预防”,构建高效稳定的数据底座。(239字)
|
1天前
|
弹性计算 缓存 安全
弹性伸缩ESS实战:应对“秒杀”活动的自动扩容与成本控制
阿里云弹性伸缩(ESS)助力应对秒杀场景下瞬时高并发挑战,通过定时与动态扩缩容策略,实现秒级资源调度。结合SLB、ECS等构建弹性架构,预热扩容避免冷启动,混合实例降本增效,辅以全链路压测与安全阈值控制,在保障系统稳定的同时,最大化成本优化,推动企业从“成本中心”迈向“效率引擎”。(238字)
|
1天前
|
消息中间件 监控 Serverless
消息队列RocketMQ解耦系统:从单体应用到分布式架构的改造之路
在数字化转型中,企业面临单体架构耦合度高、扩展性差等挑战。阿里云RocketMQ凭借高可靠、高并发、低延迟特性,成为解耦核心利器。本文详解如何通过业务梳理、渐进剥离、事务消息保障一致性、构建弹性消费集群四步法,实现从同步到异步的平滑演进,并分享顺序消息、延迟消息等最佳实践,助力企业构建敏捷、弹性的分布式系统。(238字)
|
1天前
|
人工智能 自然语言处理 API
普通人也能玩转AI:通义千问大模型API接入与应用开发初体验
通义千问API让普通人也能轻松开发AI应用。本文介绍其接入步骤、基础调用示例及智能客服、内容创作等应用场景,助你快速上手大模型开发,开启人机协作新篇章。(238字)
|
1天前
|
存储 分布式计算 DataWorks
云原生数据湖:基于DataWorks+MaxCompute构建企业级数据分析平台
在数据驱动时代,企业面临规模、类型与敏捷性的三重挑战。传统数仓难以为继,云原生数据湖成为破局关键。依托阿里云DataWorks与MaxCompute,构建集数据集成、计算、治理、服务于一体的一站式平台,实现从原始数据到智能决策的高效转化。存储与计算分离、统一元数据管理、全链路治理与API化服务,助力企业降本增效,释放数据资产价值,打造面向未来的数据基石。(238字)
|
1天前
|
弹性计算 负载均衡 网络协议
。全球加速GA实战:为出海游戏业务降低延迟的架构方案
阿里云全球加速(GA)为出海游戏提供低延迟、高稳定网络方案,通过智能路由与全球70+地区边缘节点,优化TCP/UDP协议传输,解决跨境延迟高、公网不稳定难题。分层架构支持四层加速、智能调度与混合云部署,结合CDN与游戏盾,实现全球玩家流畅对战,助力打造无国界沉浸式体验。(239字)