基于cookie的Web全端灰度发布方案

目录
  1. 基于网关的自动加灰
  2. 浏览器快速切换环境
  3. Fiddler快速切换环境

本文对基于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内执行

image-20220528095309785

开始灰度

document.cookie=’route-key=gray;path=/‘

取消灰度

document.cookie=’route-key=gray;path=/;max-age=0’

Fiddler快速切换环境

  • 添加灰度开关

image-20220528095533737

  • 根据开关控制路由

image-20220528095559558

if(m_Gray){
var sCookie = oSession.oRequest[“Cookie”];
sCookie = sCookie+”;”+ “route-key=gray;”;
oSession.oRequest[“Cookie”] = sCookie;
}

  • 选择开关来切换流量

image-20220528095635085