# 预发布灰度发布 从1.14.0开始支持预发布、灰度发布,可登陆`SOP-Admin`,然后选择`服务列表`进行操作。 ## 使用预发布 假设网关工程在阿里云负载均衡有两台服务器,域名分别为: |域名|说明| |:---- |:---- | |open1.domain.com |网关服务器1 | |openpre.domain.com | 网关服务器2,作为预发布请求入口| 线上网关入口为`http://open.domain.com/`,请求网关`http://open.domain.com/`会负载均衡到这两台服务器 SOP开启预发布步骤如下: 修改网关工程配置文件,指定预发布域名 ```properties # 预发布网关域名,多个用英文逗号(,)隔开 pre.domain=openpre.domain.com ``` 重启网关 微服务启动参数添加:`--spring.cloud.nacos.discovery.metadata.env=pre`(eureka下是:`--eureka.instance.metadata-map.env=pre`)。 建议线上配两套启动脚本,其中预发布启动脚本添加启动参数`--eureka.instance.metadata-map.env=pre` 登录SOP-Admin,在服务列表中点击预发布,然后预发布请求地址变成:`http://openpre.domain.com/`。 从`openpre.domain.com`请求进来的用户都会进预发布服务器,其它情况都走非预发布服务器。 ## 使用灰度发布 灰度发布可允许指定的用户访问灰度服务器,其它用户还是走正常流程。 登录SOP-Admin,前往`服务列表`。 - 先设置灰度参数,指定灰度appId和灰度接口 - 服务器实例开启灰度 参考类: - SopLoadBalancerClient.java gateway网关下预发布/灰度服务选取 - EnvironmentServerChooser.java zuul网关下预发布/灰度服务选取 ### 自定义判断灰度用户 默认根据`appId`和`IP`来判断灰度用户,如果要通过其它维度来判断是否是灰度用户,可实现GrayUserBuilder接口, 然后在springboot main方法中调用如下方法 ```java ApiConfig.getInstance().addGrayUserBuilder(new XXGrayUserBuilder()); ``` 参考:com.gitee.sop.gatewaycommon.loadbalancer.builder.AppIdGrayUserBuilder.java