26|灰度发布:新功能上线如何有效控风险?
徐逸

你好,我是徐逸。
通过前面课程的学习,相信你已经从编码和架构层面,熟练掌握了提升服务稳定性的多种方法。然而,即便我们再小心谨慎,在快速迭代的开发环境中,也难以完全避免忙中出错的情况。因此,为了防止有缺陷的代码或配置直接上线,对大量用户造成不良影响,我们还需要一些能够在小范围内发布新版本,并且能快速回滚的部署策略。
今天这节课,我们就来聊一聊业界常见的几种部署策略。
部署策略
当服务新版本准备上线时,为了确保新旧版本能够顺利切换,业界有下面几种常用的部署方式。
首先是停机部署。在这种部署方式下,在发布新版本时,我们需要先停止服务的运行,待新版本的代码和配置准备好之后,再重新启动服务。
停机部署过程相对简单,不需要复杂的流量切换和分批更新过程。但是系统在部署期间完全不可用,而且一旦出现问题,就需要重新停机部署旧版本,不能快速回滚。因此,停机部署常见于对系统可用性要求不高的系统,在业务低峰期进行版本升级。比如一些政府网站、小型企业或内部系统的更新,在发布版本前会提前发出停机部署公告,类似下图。

图1 停机维护公告
接下来,我们来看下蓝绿部署。在实施蓝绿部署时,除了正在运行稳定版本代码的线上蓝环境外,我们还需要搭建一套全新的绿环境,并且将绿环境中的代码更新为即将发布的新版本。当在绿环境中的各项测试与验证都确认无误后,再通过流量调度,逐步将线上流量从蓝环境切换到绿环境。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. 常见的部署策略包括停机部署、蓝绿部署、滚动部署和灰度部署,每种策略都有其适用的场景和优势。 2. 蓝绿部署适合对系统可用性要求高的场景,能实现零停机时间和快速回滚,但需要维护两套完整的运行环境,资源成本较高。 3. 滚动部署适合大型互联网公司,无需额外搭建环境资源,但部署和回滚操作耗时较长。 4. 灰度部署能够先把新版本部署到特定的服务器上,通过监控降低发布风险,适合于大规模功能改造时的发布。 5. 在灰度部署的实践中,可以根据用户的特定特征进行灰度操作,包括基于用户ID、用户角色、地理位置、用户行为和设备类型的灰度方案。 6. 业务维度灰度操作能够有效控制新功能的推广节奏,确保平稳过渡,适用于不同的功能测试或市场推广场景。 7. 灰度部署和滚动部署相结合的发布策略能够先将新版本部署到灰度机器上,确认没有问题后再采用滚动部署的方式对其他机器进行更新,最终实现全量发布。 8. 基于用户ID的灰度方案能够有效控制新功能的推广节奏,适用于大规模功能改造时的发布。 9. 基于用户角色、地理位置、用户行为和设备类型的灰度方案能够根据用户特征进行灰度测试,提前发现问题,优化功能。 10. 选择合适的部署策略能够有效控制发布风险,保障业务的稳定性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 服务开发高手课》,新⼈⾸单¥59
《Go 服务开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论