零停机部署 是一种在不中断服务和不影响用户可用性的情况下更新应用程序的实践。这是通过顺序地淘汰旧实例并引入新实例来实现的。
在云中对无状态应用程序的实现示例(例如,通过Kubernetes):
带有滚动更新的deployment.yaml示例:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2
关键特点:
在更改数据模式时,零停机部署是否不可能?
是可能的,前提是模式的迁移以两步进行:首先,代码与旧模式和新模式兼容,然后进行迁移并删除遗留代码。
如果应用程序是无状态的,是否总能保证零停机部署?
不!限制因素可能是外部状态,连接超时,未处理的请求或不受支持的反向不兼容API更改。
零停机部署是否只需要大型公司?
不。即使对于小型初创公司和SaaS解决方案,零停机也是用户体验的关键因素(尤其在全球市场和高负载环境中)。