主流发布方案介绍
主流发布方案:
- 蓝绿发布
- 滚动发布
- 灰度发布(金丝雀发布)
- A/B Test
蓝绿发布 简单粗暴
这些发布方案主要解决什么问题,主要是解决新旧业务平滑的切换,升级,顺利的带入到生产环境,保持其不间断的提供服务,减少流量丢失。
项目逻辑上分为AB组,在项目升级时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。A组升级完成上线,B组从负载均衡中摘除。
特点:
- 策略简单
- 升级/回滚速度快
- 用户无感知,平滑过渡
缺点:
- 需要两倍以上服务器资源
- 短时间内浪费一定资源成本
- 有问题影响范围大
适合小项目,对用户的敏感度不是特别大。
滚动发布
kubernetes默认的更新策略也就是主流发布方案是滚动更新。
每次只升级一个或多个服务,升级完成后加入生产环境, 不断执行这个过程,直到集群中的全部旧版升级新版本。
Kubernetes的默认发布策略。
特点:
- 用户无感知,平滑过渡
缺点:
- 部署周期长(需要健康检查,等它准备就绪,然后升级下一个,健康检查还是需要花费一些时间的)
- 发布策略较复杂
- 不易回滚
- 有影响范围较大
灰度发布(金丝雀发布)
只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没有什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。(影响面非常的小)
特点:
- 保证整体系统稳定性
- 用户无感知,平滑过渡
缺点:
- 自动化要求高
A/B Test
灰度发布的一种方式,主要对特定用户采样后,对收集到的反馈数据做相关对比,然后根据比对结果作出决策。用来测试应用功能表现的方法,侧重应用的可用性,受欢迎程度等,最后决定是否升级。