
1) 【一句话结论】蓝绿部署通过双活环境快速切换实现零停机,金丝雀发布通过逐步流量切换降低风险,二者各有优劣,需根据业务对可用性、风险敏感度的要求选择方案。
2) 【原理/概念讲解】
蓝绿部署:准备两个完全相同的环境(如“蓝色”旧版、“绿色”新版),当新版本稳定后,通过流量切换工具(如Nginx、HAProxy)将所有流量从旧环境切换到新环境,实现零停机。类比:像换衣服,直接换新衣服,用户感觉不到切换。
金丝雀发布:逐步将流量从旧版本切换到新版本,先让小比例流量(如1%-10%)访问新版本,观察错误率、响应时间等指标,若无异常则逐步增加新版本流量比例,直至100%。类比:像试穿新衣服,先试穿一小部分,觉得合适再全换。
3) 【对比与适用场景】
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 蓝绿部署 | 准备双活环境,切换流量 | 零停机、快速回滚 | 业务对可用性要求极高(如金融、电商核心服务) | 需双活环境,成本较高 |
| 金丝雀发布 | 逐步替换流量到新版本 | 风险低、可观察性强 | 业务对风险敏感(如新功能上线) | 切换时间长,不适合高可用场景 |
4) 【示例】
5) 【面试口播版答案】
“面试官您好,关于系统升级保证服务连续性,我主要讲蓝绿部署和金丝雀发布两种方案。首先,蓝绿部署是通过准备两个完全相同的环境(比如蓝色是旧版,绿色是新版),当新版本稳定后,直接切换流量,实现零停机。比如像换衣服一样,直接换新衣服,用户感觉不到切换。它的优点是切换快、回滚简单,缺点是需要双活环境,成本较高。然后是金丝雀发布,是逐步将流量从旧版本切换到新版本,比如先让1%的流量到新版本,观察错误率、响应时间等指标,没问题再逐步增加到100%。它的优点是风险低,能逐步验证,缺点是切换时间长,不适合对可用性要求极高的场景。总结来说,蓝绿适合对可用性要求高、切换成本低的场景,金丝雀适合对风险敏感、需要逐步验证的场景。”
6) 【追问清单】
7) 【常见坑/雷区】