金丝雀发布

简介: 金丝雀发布(Canary)是一种渐进式发布策略,类似灰度发布。不同于蓝绿部署需两套完整环境切换,金丝雀是在一套系统中逐步替换旧版本,适用于大规模服务器场景。例如,线上有一万台Web服务器时,可先更新10台并观察,确认无误后逐步推广。通过流量切分控制新版本请求比例,降低发布风险。而单台服务器场景则适合蓝绿部署,不适用金丝雀。两种策略各有适用场景,需根据实际架构选择。

金丝雀发布(Canary)也是一种发布策略,和国内常说的灰度发布是同一类策略。
蓝绿部署是准备两套系统,在两套系统之间进行切换,金丝雀策略是只有一套系统,逐渐替换这套系统。
譬如说,目标系统是一组无状态的Web服务器,但是数量非常多,假设有一万台。
这时候,蓝绿部署就不能用了,因为你不可能申请一万台服务器专门用来部署蓝色系统(在蓝绿部署的定义中,蓝色的系统要能够承接所有访问)。
可以想到的一个方法是:
只准备几台服务器,在上面部署新版本的系统并测试验证。测试通过之后,担心出现意外,还不敢立即更新所有的服务器。 先将线上的一万台服务器中的10台更新为最新的系统,然后观察验证。确认没有异常之后,再将剩余的所有服务器更新。
这个方法就是金丝雀发布。
实际操作中还可以做更多控制,譬如说,给最初更新的10台服务器设置较低的权重、控制发送给这10台服务器的请求数,然后逐渐提高权重、增加请求数。
这个控制叫做“流量切分”,既可以用于金丝雀发布,也可以用于后面的A/B测试。
蓝绿部署和金丝雀发布是两种发布策略,都不是万能的。有时候两者都可以使用,有时候只能用其中一种。
上面的例子中可以用金丝雀,不能用蓝绿,那么什么时候可以用蓝绿,不能用金丝雀呢?整个系统只有一台服务器的时候。

相关文章
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
605 0
|
JSON 安全 数据安全/隐私保护
Django之JWT库与SimpleJWT库的使用
使用Django框架时,可以选择jwt或simplejwt来增强其功能。这两个扩展提供了与JWT认证相关的功能,可以帮助实现安全而高效的用户认证和授权机制。通过使用它们,可以轻松地将JWT集成到Django应用程序中,并提供可靠的用户身份验证和权限管理功能。
908 1
|
JavaScript Docker 容器
Docker中文件拷贝命令的详细解释与真实案例
Docker中文件拷贝命令的详细解释与真实案例
1268 0
|
10月前
|
Kubernetes 监控 安全
使用Istio实现细粒度流量管理:金丝雀发布实战
使用Istio实现细粒度流量管理:金丝雀发布实战
|
1月前
|
人工智能 开发框架 JavaScript
一篇文章告诉你,Spec-Kit、OpenSpec哪个适合你
本文深度对比GitHub官方的Spec-Kit(重型、流程严、适配大团队新项目)与社区驱动的OpenSpec(轻量、灵活、专为存量迭代优化),助你基于项目规模、阶段和团队能力,快速选对AI规范驱动开发工具。
238 0
一篇文章告诉你,Spec-Kit、OpenSpec哪个适合你
|
2月前
|
Java Linux Apache
【2026最新】Maven下载安装配置保姆级图文教程(附安装包+图文步骤)
Apache Maven是免费开源的Java项目管理与构建工具,基于POM模型,统一管理依赖、编译、测试、打包与部署。支持Windows/macOS/Linux,最新版3.9.15。规范性强、上手快,广泛用于企业级Java项目。(239字)
|
9月前
|
人工智能 安全
阿里巴巴 AI Coding 分享会 Qoder Together 杭州站诚邀你的参与!
Qoder Together ,不止技术分享,更是思维共振与灵感迸发。我们面向全球 AI Coding 爱好者,邀请 Qoder 团队、实战用户、AI Coding 探索者齐聚一堂,交流激发创意,碰撞拓展边界,重新定义智能编程未来。
547 0
|
10月前
|
监控 负载均衡 安全
使用Istio实现微服务流量管理入门
使用Istio实现微服务流量管理入门
391 98
|
7月前
|
运维 资源调度 调度
实时云渲染平台的全链路技术架构解析
实时云渲染技术通过云端集中渲染与低延迟流式传输,实现在轻量终端上访问复杂三维应用。其全链路优化涵盖智能资源调度、自适应网络传输与多终端兼容,显著降低本地算力依赖与运维成本,并增强数据安全性,适用于数字孪生、远程协作等多元场景。
|
7月前
|
JavaScript 前端开发 关系型数据库
3.2 nodejs连接mysql
本节介绍Node.js连接MySQL的配置方法:通过创建`.env`文件管理数据库配置,实现解耦;在`config/db.js`中使用`mysql2/promise`和`dotenv`模块建立连接池,并提供连接测试功能,确保数据库连接稳定可靠。