要在不停机的情况下推出版本更新,您需要一种部署策略,以便在保持应用程序对用户可用的同时更新它。一种常见的方法是使用 蓝绿部署 。在这种方法中,您维护两个相同的生产环境:“蓝色”环境运行当前版本,而“绿色”环境托管新版本。一旦绿色环境经过测试并准备就绪,您就可以将所有流量从蓝色重定向到绿色。这种切换是瞬间发生的,避免了停机。例如,AWS Elastic Beanstalk 或 Kubernetes 等云平台支持蓝绿设置,让您可以自动执行环境之间的流量转移。如果出现问题,您可以快速切换回蓝色来恢复。
另一种策略是 金丝雀发布 ,在完全推出新版本之前,逐步将新版本暴露给一小部分用户。通过及早发现问题,这可以最大限度地降低风险。例如,您可以使用负载均衡器或像 Istio 这样的服务网格将 5% 的流量路由到新版本。监控工具(例如 Prometheus、Datadog)在此阶段跟踪性能和错误率。如果指标保持稳定,您可以逐步将流量增加到 100%。金丝雀发布非常适合微服务架构,在这种架构中,各个组件可以独立更新。它们还与功能标志配对,让您可以打开/关闭新功能,而无需重新部署代码。
处理数据库更改对于零停机更新至关重要。 向后兼容的模式更改 确保旧版本和新版本可以共存。例如,不要重命名列,而是添加一个新列并更新两个版本以同时读取/写入两者。一旦旧版本退役,清理已弃用的字段。Liquibase 或 Flyway 等工具可帮助管理这些迁移。此外,确保您的 CI/CD 管道自动执行测试、构建和部署版本。例如,GitHub Actions 或 GitLab CI 可以运行集成测试、部署到暂存环境并触发蓝绿或金丝雀过程。将这些技术结合起来,可以在保持可用性的同时实现无缝的版本更新。