背景介绍
蓝绿灰度发布
介绍
- 蓝绿部署中,一共有两套系统:一套是正在提供服务系统(也就是上面说的旧版),标记为
绿色
;另一套是准备发布的系统,标记为蓝色
。 - 两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。正在对外提供服务的老系统是
绿色系统
,新部署的系统是蓝色系统
。 - 在
蓝色的系统
上进行测试,测试完成后切换为蓝色系统
,同时观察蓝色系统
的运行状态,如果运行出现问题可以及时切回绿色系统
。
优点
这样做可以减少发布影响的时间。例如某网站要进行后端升级,无需完全停掉服务更新,且出现问题后可以及时切回老版本
缺点
- 需要部署两套环境(蓝和绿)
- 要求蓝绿两套系统完全没有耦合
灰度发布(金丝雀发布)
介绍
- 先启动一个新版本应用,先将少量的流量切换到新版本上,然后再对新版本做测试观察
- 确定没有问题后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量
- 直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
优点
- 通过逐步将流量引导到新版本,降低了风险,因为只有一小部分用户受到影响。
- 可以快速获得新版本的反馈,并及时检测和修复问题。
缺点
- 需要额外的设置和配置来处理流量的路由和分发
- 管理多个版本的代码和环境可能会带来复杂性
滚动发布
介绍
- 将新版本服务逐步部署到每个小部分中,同时保留其他部分使用稳定的旧版本。
- 不断执行这个旧版本替换新版本的过程,直到集群中的全部旧版本升级到新版本,逐渐将流量从旧版本切换到新版本
优点
这种部署方式相对于蓝绿部署,更加节约资源,不需要两套环境。我们可以部分部署,例如每次只取出集群的20%进行升级
缺点
回滚困难,流量直接到新的机器上,出现问题后,无法实现快速回滚;更新时间长,带来额外的风险,如果80%完成更新后发生重大漏洞,回滚会比较耗时和困难