什么是灰度发布
# 什么是灰度发布
灰度发布,蓝绿发布,滚动发布:
灰度发布,它的原理就像矿井用金丝雀探毒气,程序员先让1%的用户用新版本,其他99%的用旧版本,通过AB测试对比数据,通过流量分流,比如用Nginx的权重配置,没问题再逐渐扩大流量,这样既能验证新功能。又不会让所有人一起踩坑,它可以用于电商大促前,上新功能,用灰度发布,崩了也只影响小部分用户。
蓝绿发布,土豪的双倍快乐。原理:直接部署两套环境,蓝环境跑旧版,绿环境跑新版,通过负载均衡一键切换全部流量。关键技术是基础设施即代码(IaC),和DNS解析切换。
比如Kuberneses,它通过Deployment,可以快速部署一套新版本,通过Service,可以快速切换流量。蓝绿发布,它需要双倍资源 比如Kuberneses里同时部署两套Deployment,瞬间切换Service的流量,就可以完成蓝绿发布。但代价是资源翻倍消耗
同时它也有致命弱点:如果新版数据库有兼容问题?全量回滚要30分钟起步!
滚动发布,穷鬼的极限操作:原理:像火车换轮子,先启动1台新服务器,关1台旧服务器,循环直到全切换完;关键技术是健康检查和滚动更新策略。比如Docker Swarm 的--update-parallelism参数,这种发布方式最省资源,但回滚速度慢。 也有致命陷阱,新旧版本会同时在线。用户可能上午看到新版界面,下午又变回旧版。
- 资源消耗:蓝绿大于滚动大于灰度
- 回滚速度:蓝绿最快(秒级)灰度中级(流量切换)滚动最慢(得重新部署
- 适用场景,灰度:金融,电商等高风险系统;蓝绿:土豪公司发工资系统升级;滚动:小公司半夜偷偷更新