灰度发布的定义
灰度发布指在 黑与白之间,能够平滑过度的一种发布方式,让一部分用户使用系统原功能,另一部分用户使用系统的升级功能,假设系统的升级功能达到稳定,即可逐渐扩大影响范围,把所有用户迁移至升级功能,这样做的好处是在 初始灰度的时候可以发现问题,调整问题,以保证影响度;
常见场景
X公司已上线电商系统稳定运行1年,现需新增支付方式如云闪付作为产品支付方式的可选方案,开发团队针对目前的系统进行改造上线升级
随之而来的问题:
全量升级回导致所有用户短暂不可用;
系统升级总是伴随着风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险,系统down机的风险.....
如何做到灰度发布
用户访问系统的简易流程
使用流量染色对流量进行分发
流量染色的几种策略
- 用户特征(性别、地域等)
- 用户数量 (选定一定范围的数量)
- 用户常用功能(购物车,会员卡)
- 用户范围(资深用户、新用户 )
流量策略
- 用户规模
- 发布频率
- 功能覆盖度
- 回滚策略
- 运营策略
- 新旧系统部署策略
分布式链路追踪
如何保证灰度标识能够在链路中一直传递下去呢?
借助于分布式链路追踪思想,我们也可以传递一些自定义信息,比如灰度标识;
首先,需要支持动态路由功能,对于Spring Cloud、Dubbo开发框架,可以对出口流量实
现自定义Filter,在该Filter中完成流量识别以及标签路由。同时需要借助分布式链路追踪技
术完成流量标识链路传递以及流量自动染色。此外,需要引入一个中心化的流量治理平台,
方便各个业务线的开发者定义自己的全链路灰度规则。
实现全链路灰度的能力,无论是成本还是技术复杂度都是比较高的,以及后期的维护、扩展
都是非常大的成本