common-gray 灰度路由使用

灰度路由架构图

什么是灰度路由

灰度路由是一种服务发布策略,通过在请求中携带版本标识,将流量路由到指定版本的服务实例。常用于新功能测试、版本平滑过渡等场景。

添加依赖

在需要支持灰度路由的微服务中添加依赖:

<dependency>
    <groupId>com.pig4cloud</groupId>
    <artifactId>pigx-common-gray</artifactId>
</dependency>

服务启动指定版本

版本 A 服务启动

启动订单服务的 A 版本:

java -Dspring.cloud.nacos.discovery.metadata.VERSION=A -Dserver.port=7001 -jar demo-biz.jar

版本 B 服务启动

启动订单服务的 B 版本:

java -Dspring.cloud.nacos.discovery.metadata.VERSION=B -Dserver.port=7002 -jar demo-biz.jar
版本命名规范

VERSION 值可以是任意字符串,建议使用语义化命名,如 v1、v2、stable、beta 等

前端配置版本

v5.8+ 版本配置

在项目根目录的 .env 文件中配置:

# v5.8+ 版本通过 .env 维护版本
VITE_GRAY_VERSION = A

v5.7 及以下版本配置

request.ts 中添加请求头:

// request.ts 中新增如下代码
config.headers['VERSION'] = 'A' // 目标版本
request.ts 配置示例

工作原理

  1. 前端在请求头中携带 VERSION 标识
  2. 网关接收请求后,根据 VERSION 值选择对应版本的服务实例
  3. 请求被路由到指定版本的服务进行处理
注意事项

确保前端配置的版本号与后端启动时指定的 VERSION 参数一致,否则请求可能路由失败