天天看点

第二十五篇:稳定性之灰度发布

随着用户规模逐渐增长、产品的更新频繁,新版的每次上线,各方都要承受极大的压力,一旦产品发布出现事故,可能影响的范围和损失都比较大,为了解决产品发布过程中的风险控制,要有部分的用户参与到新产品中,体验使用观测其真实反馈,如果没有用户的参与,直接面对全量用户,那么风险是可想而知的。

灰度发布

为了控制产品发布过程中的风险、故有了灰度发布,百度百科的解释是这样的:

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式,在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度;灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。

灰度发布是在线上同时存在新旧两个版本,根据不同策略,按需分配部分流量比例到新的版本,支持流量新旧切换、及切换流量比例,也可支持快速回滚,通过观测这部分用户使用新版本的状态状况数据,渐进式完成新版本的全量上线,最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面。

灰度类型

灰度发布的类型,通常情况下可分为前端、客户端、服务端,灰度有个原则就是要能够保证用户请求的完整性,例如:要么该用户的全部请求有新版本提供服务,要么由旧版本提供服务,不可能一会旧版本一会新版本,原因是可能存数据依赖问题。

灰度策略

灰度策略是我们要选择哪些用户体验新版本,比较常用的就是按照人划分,可按照用户ID、用户IP、设备等其他标签多维度策略,来观测使用效果,还有其他的方式例如随机分配流量百分比、渠道等等。

可观测性

流量染色

  • 逻辑染色:该方式是通过携带灰度因子,通过层层调用传递的方式进行程序逻辑控制。
  • 物理染色:该方式是按照机器的维度分流。

小结

继续阅读