本文对基于cookie的灰度发布架构的数据流转做了简单的介绍,并提供了三种灰度染色的方案,以应对不同角色的灰度请求调整
基于网关的自动加灰
灰度实例请求时序图
sequenceDiagram user ->> gateway : 访问灰度入口 gateway -->> user : 设置路由cookie user ->> gateway: 带着路由cookie请求接口 gateway ->> gateway: 从cookie中解析路由标签 gateway ->> api: 带着路由标签转发到灰度实例 api->> dubbo: 带着路由标签转发到灰度实例 dubbo ->> dubbon: 调用其他灰度实例 dubbon -->> dubbo: 处理灰度实例处理结果 dubbo ->> dubbo: 处理灰度业务 dubbo -->> api: 返回灰度响应 gateway ->> api: 返回灰度响应 user ->> gateway: 返回灰度响应
- 用户访问灰度入口
- 网关自动响应灰度cookie
- 用户下次访问其他接口的时候回自动带上灰度cookie
- 网关解析度灰度cookie,路由到灰度API实例
- API在调用dubbo的时候,基于dubbo的路由识别灰度标签,转发到灰度实例
浏览器快速切换环境
在浏览器的console内执行
开始灰度
document.cookie=’route-key=gray;path=/‘
取消灰度
document.cookie=’route-key=gray;path=/;max-age=0’
Fiddler快速切换环境
- 添加灰度开关
- 根据开关控制路由
if(m_Gray){
var sCookie = oSession.oRequest[“Cookie”];
sCookie = sCookie+”;”+ “route-key=gray;”;
oSession.oRequest[“Cookie”] = sCookie;
}
- 选择开关来切换流量