mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
支持预发布、灰度发布
This commit is contained in:
@@ -8,7 +8,6 @@ import com.gitee.sop.gatewaycommon.zuul.ZuulContext;
|
||||
import com.gitee.sop.gatewaycommon.zuul.loadbalancer.BaseServerChooser;
|
||||
import com.netflix.loadbalancer.Server;
|
||||
import com.netflix.niws.loadbalancer.DiscoveryEnabledServer;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
@@ -23,6 +22,7 @@ public class EnvironmentServerChooser extends BaseServerChooser {
|
||||
private static final String MEDATA_KEY_ENV = "env";
|
||||
private static final String ENV_PRE_VALUE = "pre";
|
||||
private static final String ENV_GRAY_VALUE = "gray";
|
||||
|
||||
/**
|
||||
* 预发布机器域名
|
||||
*/
|
||||
@@ -46,39 +46,6 @@ public class EnvironmentServerChooser extends BaseServerChooser {
|
||||
return metadata.get(MEDATA_KEY_ENV);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean match(Server server) {
|
||||
// eureka存储的metadata
|
||||
Map<String, String> metadata = ((DiscoveryEnabledServer) server).getInstanceInfo().getMetadata();
|
||||
String env = metadata.get(MEDATA_KEY_ENV);
|
||||
return StringUtils.isNotBlank(env);
|
||||
}
|
||||
|
||||
/**
|
||||
* 这里判断客户端能否访问,可以根据ip地址,域名,header内容来决定是否可以访问预发布环境
|
||||
*
|
||||
* @param server 服务器实例
|
||||
* @param request request
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
protected boolean canVisit(Server server, HttpServletRequest request) {
|
||||
// eureka存储的metadata
|
||||
Map<String, String> metadata = ((DiscoveryEnabledServer) server).getInstanceInfo().getMetadata();
|
||||
String env = metadata.get(MEDATA_KEY_ENV);
|
||||
boolean canVisit;
|
||||
switch (env) {
|
||||
case ENV_PRE_VALUE:
|
||||
canVisit = canVisitPre(server, request);
|
||||
break;
|
||||
case ENV_GRAY_VALUE:
|
||||
canVisit = canVisitGray(server, request);
|
||||
break;
|
||||
default:
|
||||
canVisit = false;
|
||||
}
|
||||
return canVisit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过判断hostname来确定是否是预发布请求,可修改此方法实现自己想要的
|
||||
@@ -121,7 +88,7 @@ public class EnvironmentServerChooser extends BaseServerChooser {
|
||||
*
|
||||
* @param param 接口参数
|
||||
* @param userKeyManager userKey管理
|
||||
* @param server 服务器实例
|
||||
* @param server 服务器实例
|
||||
* @param request request
|
||||
* @return true:是
|
||||
*/
|
||||
|
@@ -46,7 +46,6 @@ public class DbEnvGrayManager extends DefaultEnvGrayManager {
|
||||
List<ConfigGrayUserkey> list = configGrayUserkeyMapper.list(query);
|
||||
for (ConfigGrayUserkey configGrayUserkey : list) {
|
||||
this.setServiceGrayConfig(configGrayUserkey);
|
||||
this.addServiceInstance(configGrayUserkey.getServiceId(), configGrayUserkey.getInstanceId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +68,7 @@ public class DbEnvGrayManager extends DefaultEnvGrayManager {
|
||||
|
||||
List<String> list = Stream.of(userKeys).collect(Collectors.toList());
|
||||
ServiceGrayConfig serviceGrayConfig = getServiceGrayConfig(instanceId);
|
||||
serviceGrayConfig.setServiceId(configGrayUserkey.getServiceId());
|
||||
serviceGrayConfig.getUserKeys().addAll(list);
|
||||
|
||||
Map<String, String> grayNameVersion = serviceGrayConfig.getGrayNameVersion();
|
||||
|
Reference in New Issue
Block a user