前后端cookie灰度实现

702 阅读1分钟

前后端灰度实现


  1. 前端灰度方案流程图

2. 前端灰度原理及遇到的问题(利用cookie保存店铺财务店号,判断是否进入灰度服务器)
  • 如何存储cookie,并保证登录成功后所有资源请求中的cookie都有带storeId(cookie文档: www.npmjs.com/package/js-…
  • 登录成功以后发现静态资源请求cookie中没带storeId。解决该问题方法是,登录成功运行以下代码刷新页面,这个时候静态资源请求cookie中也带入了storeId。 window.location.href = window.location.origin + window.location.pathname; window.location.reload()
3. nginx配置

location /navi-1/{
    alias $htdoc/vue-navi/dist/;
    if ($request_filename ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf)$) {
        expires 30d;
    }
}


location /navi/{
    alias $htdoc/vue-navi-new/navi-base/dist/;
    if ($http_cookie ~* .*(11713900|11712100).*) {
        rewrite ^/navi/(.*)$ /navi-1/$1 last;
    }   
    if ($request_filename ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf)$) {
        expires 30d;
    }
}
  1. 服务端灰度

5. 服务灰度影响范围
  • eywa、供应商平台、pda调用采购服务时,若升级eywa、供应商平台、pda时需要接口支持,而所需接口在灰度服务器上,这几个平台默认进入的是老服务器请求接口资源,会找不到接口
    • 由于eywa请求接口不是走apiGateWay,所以无影响
    • pda平台请求灰度可以与navi保持一致,也可以在安卓原生层加入灰度判断
    • 解决方案:主要解决供应商平台灰度问题,将需灰度门店的storeId存入中,请求接口时会带上storeId,进入后默认就进到了灰度服务器,这个时候会有一个新的问题,就是navi以外所有的前端请求都会走灰度服务器