Files
SOP/doc/docs/files/10110_预发布灰度发布.md
tanghc 883a6afd0b 4.2.4
2021-01-04 14:42:41 +08:00

71 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 预发布灰度发布
从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域名进来请求路由到非预发服务器
## 使用灰度发布
- 灰度接口定义
接口名相同,版本号不同。比如接口`user.get`version:1.0
新建一个接口`user.get`version:2.0
那么这个2.0接口就是灰度接口
灰度发布可允许指定的用户访问灰度服务器,其它用户还是走正常流程。
登录SOP-Admin前往`服务列表`
- 先设置灰度参数指定灰度appId和灰度接口
- 服务器实例开启灰度
参考类:
- LoadBalanceServerChooser.java 预发布/灰度发布服务实例选择
### 自定义判断灰度用户
默认根据`appId``IP`来判断灰度用户如果要通过其它维度来判断是否是灰度用户可实现GrayUserBuilder接口
然后在springboot main方法中调用如下方法
```java
ApiConfig.getInstance().addGrayUserBuilder(new XXGrayUserBuilder());
```
参考com.gitee.sop.gatewaycommon.loadbalancer.builder.AppIdGrayUserBuilder.java