发布模式

简介: 蓝绿部署通过两套系统(蓝/绿)实现零停机发布与快速回滚,新版本在蓝色环境测试稳定后切换流量,确保平滑上线。金丝雀发布则逐步替换旧版本,适合大规模集群。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测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。

相关文章
|
JSON NoSQL Java
SpringBoot整合Redis
SpringBoot整合Redis
SpringBoot整合Redis
|
6月前
|
消息中间件 监控 物联网
领航智联时代:阿里云 MQTT+Kafka 车/物联网实时数据分析解决方案
该解决方案深度整合移动端/设备端连接利器 MQTT 与大数据流处理核心引擎 Kafka,为车联网及物联网行业提供高可靠、高性能、极简运维的数据处理链路。
853 176
|
Java 定位技术 API
标准坐标系与火星坐标系(高德)百度坐标系之间互转
这里先给大家介绍几个坐标系: 1.WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。2.GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。
4994 0
|
5月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2026 年 1 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
5月前
|
数据采集 JSON 监控
淘宝商品详情 API 全解析 —— 从接口调用到 JSON 返回数据实战
在电商数据采集、竞品分析、价格监控、选品决策等场景中,淘宝商品详情 API是最核心、最常用的数据接口。它能稳定获取商品标题、价格、销量、库存、SKU 规格、店铺信息、发货地、好评率等全维度数据,相比直接爬虫,API 调用更合规、更稳定、效率更高。
|
6月前
|
人工智能 UED
Qoder NEXT有妙用:当"反向思维"遇上AI编程助手
博士生实测Qoder NEXT新功能NES,意外发现“反向思维”妙用:通过AI高亮提示反推配置逻辑,轻松实现导航栏排序。无需代码基础,几分钟完成优化,AI不仅提供建议,更生成完整方案。技术门槛降低,效率翻倍,探索充满乐趣。#AI编程 #低代码
228 5
|
存储 人工智能 编解码
吞噬混沌:CodeBuddy与流程利刃,斩破游戏开发的蛮荒时代(一)
本文探讨了《飞机大战游戏开发流程规范》的工程化实践,涵盖版本控制、任务分配与系统设计。通过CodeBuddy智能工具,实现分支管理自动化、环境配置标准化及代码质量提升。在UI开发中,CodeBuddy确保继承规范与Docstring完整性;AI行为树开发中,它检测逻辑死循环与状态处理问题;输入系统设计中,辅助键位绑定一致性与事件处理完整性。CodeBuddy作为腾讯云推出的智能助手,将静态规范转化为动态辅助,助力游戏开发迈向“规范为骨、智能为翼”的新时代。
468 4
|
存储 人工智能 算法
【AI系统】计算图的优化策略
本文深入探讨了计算图的优化策略,包括算子替换、数据类型转换、存储优化等,旨在提升模型性能和资源利用效率。特别介绍了Flash Attention算法,通过分块计算和重算策略优化Transformer模型的注意力机制,显著减少了内存访问次数,提升了计算效率。此外,文章还讨论了内存优化技术,如Inplace operation和Memory sharing,进一步减少内存消耗,提高计算性能。
1095 34
【AI系统】计算图的优化策略
|
12月前
|
XML 人工智能 Java
java通过自定义TraceId实现简单的链路追踪
本文介绍了如何在Spring Boot项目中通过SLF4J的MDC实现日志上下文traceId追踪。内容涵盖依赖配置、拦截器实现、网关与服务间调用的traceId传递、多线程环境下的上下文同步,以及logback日志格式配置。适用于小型微服务架构的链路追踪,便于排查复杂调用场景中的问题。
556 0
|
Oracle Unix 关系型数据库
在Linux中,什么是Linux操作系统,它的特点是什么?
在Linux中,什么是Linux操作系统,它的特点是什么?

热门文章

最新文章