金丝雀发布

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

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

相关文章
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
593 0
|
JSON 安全 数据安全/隐私保护
Django之JWT库与SimpleJWT库的使用
使用Django框架时,可以选择jwt或simplejwt来增强其功能。这两个扩展提供了与JWT认证相关的功能,可以帮助实现安全而高效的用户认证和授权机制。通过使用它们,可以轻松地将JWT集成到Django应用程序中,并提供可靠的用户身份验证和权限管理功能。
889 1
|
JavaScript Docker 容器
Docker中文件拷贝命令的详细解释与真实案例
Docker中文件拷贝命令的详细解释与真实案例
1242 0
|
1月前
|
Java Linux Apache
【2026最新】Maven下载安装配置保姆级图文教程(附安装包+图文步骤)
Apache Maven是免费开源的Java项目管理与构建工具,基于POM模型,统一管理依赖、编译、测试、打包与部署。支持Windows/macOS/Linux,最新版3.9.15。规范性强、上手快,广泛用于企业级Java项目。(239字)
|
8月前
|
IDE Java 关系型数据库
如何利用Spring Initializr快速搭建项目
通过Spring Initializr可快速搭建Spring Boot项目。访问官网,配置项目信息,选择依赖(如Web、MyBatis、MySQL等),生成并下载项目压缩包,解压后导入IDE,自动构建完成,快速高效地初始化标准项目结构,提升开发效率。(238字)
899 3
|
8月前
|
人工智能 安全
阿里巴巴 AI Coding 分享会 Qoder Together 杭州站诚邀你的参与!
Qoder Together ,不止技术分享,更是思维共振与灵感迸发。我们面向全球 AI Coding 爱好者,邀请 Qoder 团队、实战用户、AI Coding 探索者齐聚一堂,交流激发创意,碰撞拓展边界,重新定义智能编程未来。
509 0
|
6月前
|
运维 资源调度 调度
实时云渲染平台的全链路技术架构解析
实时云渲染技术通过云端集中渲染与低延迟流式传输,实现在轻量终端上访问复杂三维应用。其全链路优化涵盖智能资源调度、自适应网络传输与多终端兼容,显著降低本地算力依赖与运维成本,并增强数据安全性,适用于数字孪生、远程协作等多元场景。
|
5月前
|
人工智能 安全 JavaScript
Qoder节省 Credits 的最佳实践
本文介绍如何高效节省AI编程工具(如Qoder、Cursor)的Credits资源。通过新开窗口处理无关任务、按需选择模型、优化代码结构、明确输出需求、及时终止跑偏任务及使用工程化回滚等技巧,有效降低Token消耗,提升开发效率与成本控制。
2037 10
|
6月前
|
JavaScript 前端开发 关系型数据库
3.2 nodejs连接mysql
本节介绍Node.js连接MySQL的配置方法:通过创建`.env`文件管理数据库配置,实现解耦;在`config/db.js`中使用`mysql2/promise`和`dotenv`模块建立连接池,并提供连接测试功能,确保数据库连接稳定可靠。
|
关系型数据库 MySQL PHP
新手教程:PHP入门教程
《PHP入门教程》涵盖PHP简介、环境搭建、第一个PHP脚本、基本语法、表单处理、函数定义及进一步学习方向。PHP是一种开源脚本语言,适合Web开发。环境搭建可使用XAMPP/WAMP/MAMP或手动安装Apache、PHP和MySQL。通过编写简单代码和处理表单,逐步掌握变量、字符串、数组、条件语句和循环等基础语法。最后介绍数据库操作、会话管理和面向对象编程等高级特性。
543 70

热门文章

最新文章