关键词:灰度上线
这个是一个非常复杂的话题, 没法直接给出答案, 进提供一些实现的思路:
什么是灰度
灰度系统可以把流量划分成多份,一份走新版本代码,一份走老版本代码。
而且灰度系统支持设置流量的比例,比如可以把走新版本代码的流程设置为 5%,没啥问题再放到 10%,50%,最后放到 100% 全量。
这样可以把出现问题的影响降到最低。
而且灰度系统不止这一个用途,比如产品不确定某些改动是不是要的,就要做 AB 实验,也就是要把流量分成两份,一份走 A 版本代码,一份走 B 版本代码。
实现思路
-
后端支持:灰度上线需要后端的支持,通过后端的灰度发布控制,可以将不同版本的前端应用分配给不同用户。
-
搭建网关层: 支持一部分用户分发到 A 版本, 一部分用户分发到 B 版本 (通常使用 nginx 搭建)。
-
版本管控机制: 使用版本控制系统(如Git、package.version、hash version 等)来管理不同版本的前端应用代码。在灰度上线时,可以根据需要切换到特定的版本。
-
动态路由:通过动态路由配置,将用户请求导向不同版本的前端应用。例如,可以使用Nginx或其他反向代理服务器来实现动态路由。
-
流量染色:使用Cookie或Session来控制用户的灰度版本访问。可以通过设置不同的Cookie值或Session标记,将用户分配到不同的灰度版本。
-
更复杂的漏量配置: 例如要根据部门、权限、角色等方式来开放灰度;可以使用让用户访问应用的时候, 查询其权限和角色, 根据权限和角色来分发不同的页面路由。
参考文档