支持预发布、灰度发布

This commit is contained in:
tanghc
2019-08-06 11:53:01 +08:00
parent 5d23eeb1d1
commit 91ffd3fa55
8 changed files with 34 additions and 70 deletions

View File

@@ -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
*/

View File

@@ -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();