服务有了新版本,我们需要重新发布该服务,有哪些方式呢 ?
假设该服务有10个实例,可以有以下发布模式。
蓝绿部署 (Blue-green Deployment)
- 旧版本的10个实例保持运行状态
- 为新版本生成10个实例
- 将旧版本的流量直接切换到新版本
金丝雀发布 (Canary Release)
也叫灰度发布。流程如下:
- 旧版本的10个实例保持运行状态
- 为新版本生成10个实例
- 将旧版本的流量逐步切换到新版本,比如以5%的步长进行切换,切换过程中注意观察服务
或者是:
- 旧版本的10个实例保持运行状态
- 为新版本生成1个实例
- 将旧版本的部分流量切换到新版本服务的实例中,观察无问题,则继续为新版本生成实例、切换流量,至旧版本无流量位置。