灰度发布的目的
技术角度
当发布服务变更较大或者上线新功能时为了稳妥,通常会采用灰度发布的方式。仅对部分用户开放新功能。
业务角度
产品设计不能确定哪一种方案更好时,可以同时发布两个版本。收集用户的行为数据来确定最终的产品方案。
几个关键点
如何标记灰度用户
手工配置,指定用户为灰度用户
适合内部人员做线上灰度测试。
按找流量的百分比,分两种情况
第一种,简单粗暴,直接按配置的百分比随机灰度,会出现同一个用户同时访问原服务和灰度服务的可能。
第二钟,当用户被标记为会度用户时,以后的所有请求都会转发到灰度服务。实现起来相对复杂。
配置指定的灰度用户个数
随机选取指定个数个用户进行灰度。
标记工作需要在流量的入口进行标记。
如何标记灰度服务
可以通过配置应用的启动参数,向服务注册中心注册时携带此参数。
灰度标记的传递
以spring cloud为例,在流量入口处判断当前用户是否是灰度用户,如果是灰度用户,选取服务注册中心上的灰度服务,并将请求转发到灰度服务,同时将灰度标记通过http header进行传递。
灰度服务在接收到灰度请求时,将http header中的灰度标记存储的本地线程,后续调用其他服务时同样可根据该标记选择灰度服务。层层传递。
![](https://img-blog.csdnimg.cn/img_convert/65113e9ea5ce24c17b5080a3fceab156.jpeg)