You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
# 预发布灰度发布
|
|
|
|
|
|
|
|
从1.14.0开始支持预发布、灰度发布,可登陆`SOP-Admin`,然后选择`服务列表`进行操作。
|
|
|
|
|
|
|
|
## 使用预发布
|
|
|
|
|
|
|
|
SOP中预发布的思路如下:
|
|
|
|
|
|
|
|
假设网关工程sop-gateway在阿里云负载均衡有两台服务器,域名分别为:
|
|
|
|
|
|
|
|
|域名|说明|
|
|
|
|
|:---- |:---- |
|
|
|
|
|open1.domain.com |网关服务器1 |
|
|
|
|
|openpre.domain.com | 网关服务器2,作为预发布请求入口|
|
|
|
|
|
|
|
|
SLB对外域名为:`open.domain.com`,即开放平台入口为:`http://open.domain.com`
|
|
|
|
|
|
|
|
访问`open.domain.com`会负载均衡到`open1.domain.com`和`openpre.domain.com`这两台实例
|
|
|
|
|
|
|
|
如果单独从`openpre.domain.com`访问,则会访问到预发布微服务。
|
|
|
|
|
|
|
|
SOP开启预发布步骤如下:
|
|
|
|
|
|
|
|
修改网关工程配置文件,指定预发布域名
|
|
|
|
|
|
|
|
```properties
|
|
|
|
# 预发布网关域名,多个用英文逗号(,)隔开
|
|
|
|
pre.domain=openpre.domain.com
|
|
|
|
```
|
|
|
|
|
|
|
|
重启网关
|
|
|
|
|
|
|
|
|
|
|
|
微服务启动参数添加:`--spring.cloud.nacos.discovery.metadata.env=pre`(eureka下是:`--eureka.instance.metadata-map.env=pre`)。
|
|
|
|
建议线上配两套启动脚本,其中预发布启动脚本添加启动参数`--spring.cloud.nacos.discovery.metadata.env=pre`
|
|
|
|
|
|
|
|
登录SOP-Admin,在服务列表中点击预发布。
|
|
|
|
|
|
|
|
从`openpre.domain.com`请求进来的用户都会进预发布服务器,从SLB域名进来请求路由到非预发服务器
|
|
|
|
|
|
|
|
## 使用灰度发布
|
|
|
|
|
|
|
|
灰度发布可允许指定的用户访问灰度服务器,其它用户还是走正常流程。
|
|
|
|
|
|
|
|
登录SOP-Admin,前往`服务列表`。
|
|
|
|
|
|
|
|
- 先设置灰度参数,指定灰度appId和灰度接口
|
|
|
|
- 服务器实例开启灰度
|
|
|
|
|
|
|
|
|
|
|
|
参考类:
|
|
|
|
|
|
|
|
- LoadBalanceServerChooser.java 预发布/灰度发布服务实例选择
|
|
|
|
|
|
|
|
### 自定义判断灰度用户
|
|
|
|
|
|
|
|
默认根据`appId`和`IP`来判断灰度用户,如果要通过其它维度来判断是否是灰度用户,可实现GrayUserBuilder接口,
|
|
|
|
然后在springboot main方法中调用如下方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
ApiConfig.getInstance().addGrayUserBuilder(new XXGrayUserBuilder());
|
|
|
|
```
|
|
|
|
参考:com.gitee.sop.gatewaycommon.loadbalancer.builder.AppIdGrayUserBuilder.java
|