预发布灰度发布
从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开启预发布步骤如下:
修改网关工程配置文件,指定预发布域名
# 预发布网关域名,多个用英文逗号(,)隔开
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方法中调用如下方法
ApiConfig.getInstance().addGrayUserBuilder(new XXGrayUserBuilder());
参考:com.gitee.sop.gatewaycommon.loadbalancer.builder.AppIdGrayUserBuilder.java