This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch dev-metadata in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
commit e3916ef64ade94129dc7866909ee4c2e237838cd Author: ken.lj <ken.lj...@gmail.com> AuthorDate: Thu Nov 15 10:58:39 2018 +0800 add cluster-style address support for configcenter --- .../java/org/apache/dubbo/common/Constants.java | 2 +- .../org/apache/dubbo/config/AbstractConfig.java | 2 +- .../dubbo/config/AbstractInterfaceConfig.java | 16 ++++- .../org/apache/dubbo/config/ApplicationConfig.java | 24 +------ .../apache/dubbo/config/ConfigCenterConfig.java | 84 ++++++++++++---------- .../org/apache/dubbo/config/ServiceConfig.java | 15 +++- .../apache/dubbo/config/context/Environment.java | 22 ++++++ .../org/apache/dubbo/config/support/Parameter.java | 2 + .../dubbo/config/spring/ConfigCenterBean.java | 40 +++++++---- .../src/main/resources/META-INF/compat/dubbo.xsd | 4 +- .../src/main/resources/META-INF/dubbo.xsd | 4 +- .../META-INF/spring/dubbo-demo-consumer.xml | 2 +- .../META-INF/spring/dubbo-demo-provider.xml | 2 +- .../governance/DynamicConfigurationFactory.java | 2 +- .../support/apollo/ApolloDynamicConfiguration.java | 2 +- .../archaius/ArchaiusDynamicConfiguration.java | 2 +- 16 files changed, 138 insertions(+), 87 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java index a4b64ca..2d01407 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java @@ -58,7 +58,7 @@ public class Constants { public static final String ROUTERS_SUFFIX = ".routers"; - public static final String CONFIG_TYPE_KEY = "config.type"; + public static final String DEFAULT_CONFIG_PROTOCOL = "nop"; public static final String CONFIG_ADDRESS_KEY = "config.address"; public static final String CONFIG_ENV_KEY = "config.env"; public static final String CONFIG_CLUSTER_KEY = "config.cluster"; diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java index ffb0f03..243e8d2 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractConfig.java @@ -570,7 +570,7 @@ public abstract class AbstractConfig implements Serializable { getter = getClass().getMethod("is" + propertyName); } Parameter parameter = getter.getAnnotation(Parameter.class); - if (parameter != null && StringUtils.isNotEmpty(parameter.key())) { + if (parameter != null && StringUtils.isNotEmpty(parameter.key()) && parameter.propertyKey()) { propertyName = parameter.key(); } else { propertyName = propertyName.toLowerCase(); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java index 6e41fe6..e1f42ad 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java @@ -25,6 +25,7 @@ import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.common.utils.ReflectUtils; import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.common.utils.UrlUtils; +import org.apache.dubbo.config.context.Environment; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.metadata.integration.MetadataReportService; import org.apache.dubbo.monitor.MonitorFactory; @@ -36,6 +37,7 @@ import org.apache.dubbo.rpc.cluster.Cluster; import org.apache.dubbo.rpc.support.MockInvoker; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -125,8 +127,18 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { if (registries == null || registries.isEmpty()) { registries = new ArrayList<>(); - RegistryConfig registryConfig = new RegistryConfig(); - registries.add(registryConfig); + String registryIds = Environment.getInstance().getStartupCompositeConf(null, null).getString("dubbo.registries"); + if (StringUtils.isNotEmpty(registryIds)) { + Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(registryIds)) + .map(regId -> { + RegistryConfig registryConfig = new RegistryConfig(); + registryConfig.setId(regId); + return registryConfig; + }) + .forEach(registries::add); + } else { + registries.add(new RegistryConfig()); + } } for (RegistryConfig registryConfig : registries) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java index 6328725..f4c529a 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java @@ -81,10 +81,6 @@ public class ApplicationConfig extends AbstractConfig { // should we accept foreign ip or not? private Boolean qosAcceptForeignIp; - // used for dynamic configuration - private String config; - private String address; - // customized parameters private Map<String, String> parameters; @@ -99,7 +95,7 @@ public class ApplicationConfig extends AbstractConfig { setName(name); } - @Parameter(key = Constants.APPLICATION_KEY, required = true) + @Parameter(key = Constants.APPLICATION_KEY, required = true, propertyKey = false) public String getName() { return name; } @@ -255,24 +251,6 @@ public class ApplicationConfig extends AbstractConfig { this.qosAcceptForeignIp = qosAcceptForeignIp; } - @Parameter(key = "config.type") - public String getConfig() { - return config; - } - - public void setConfig(String config) { - this.config = config; - } - - @Parameter(key = "config.address") - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - public Map<String, String> getParameters() { return parameters; } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java index da0151f..6904413 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java @@ -20,6 +20,7 @@ import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.utils.StringUtils; +import org.apache.dubbo.common.utils.UrlUtils; import org.apache.dubbo.config.context.Environment; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.governance.DynamicConfiguration; @@ -35,7 +36,7 @@ import java.util.Properties; * */ public class ConfigCenterConfig extends AbstractConfig { - private String type; + private String protocol; private String address; private String env; private String cluster; @@ -61,46 +62,50 @@ public class ConfigCenterConfig extends AbstractConfig { public ConfigCenterConfig() { } - private URL toConfigUrl() { - String host = address; - int port = 0; + public void init() { + DynamicConfiguration dynamicConfiguration = startDynamicConfiguration(); + String configContent = dynamicConfiguration.getConfig(configfile, group); + + String appGroup = getApplicationName(); + String appConfigContent = null; + if (StringUtils.isNotEmpty(appGroup)) { + appConfigContent = dynamicConfiguration.getConfig + ( + StringUtils.isNotEmpty(localconfigfile) ? localconfigfile : configfile, + appGroup + ); + } try { - if (StringUtils.isNotEmpty(address)) { - String[] addrs = address.split(":"); - if (addrs.length == 2) { - host = addrs[0]; - port = Integer.parseInt(addrs[1]); - } - } - } catch (Exception e) { - throw e; + Environment.getInstance().setConfigCenterFirst(priority); + Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent)); + Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent)); + } catch (IOException e) { + throw new IllegalStateException("Failed to parse configurations from Config Center.", e); } - - Map<String, String> map = this.getMetaData(); - return new URL(Constants.CONFIG_PROTOCOL, username, password, host, port, ConfigCenterConfig.class.getSimpleName(), map); } - public void init() { + /*public void initWithoutRemoteConfig() { + startDynamicConfiguration(); + }*/ + + private DynamicConfiguration startDynamicConfiguration() { // give jvm properties the chance to override local configs, e.g., -Ddubbo.configcenter.config.priority refresh(); +// checkConfigCenter(); URL url = toConfigUrl(); DynamicConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(DynamicConfigurationFactory.class).getAdaptiveExtension().getDynamicConfiguration(url); Environment.getInstance().setDynamicConfiguration(dynamicConfiguration); - String configContent = dynamicConfiguration.getConfig(configfile, group); + return dynamicConfiguration; + } - String appConfigContent = dynamicConfiguration.getConfig - ( - StringUtils.isNotEmpty(localconfigfile) ? localconfigfile : configfile, - getApplicationName() - ); - try { - Environment.getInstance().setConfigCenterFirst(priority); - Environment.getInstance().updateExternalConfigurationMap(parseProperties(configContent)); - Environment.getInstance().updateAppExternalConfigurationMap(parseProperties(appConfigContent)); - } catch (IOException e) { - throw new IllegalStateException("Failed to parse configurations from Config Center.", e); + private URL toConfigUrl() { + Map<String, String> map = this.getMetaData(); + if (StringUtils.isNotEmpty(env) && StringUtils.isEmpty(address)) { + address = Constants.ANYHOST_VALUE; } + map.put(Constants.PATH_KEY, ConfigCenterConfig.class.getSimpleName()); + return UrlUtils.parseURL(address, map); } private String getApplicationName() { @@ -116,7 +121,7 @@ public class ConfigCenterConfig extends AbstractConfig { protected Map<String, String> parseProperties(String content) throws IOException { Map<String, String> map = new HashMap<>(); - if (content == null) { + if (StringUtils.isEmpty(content)) { logger.warn("You specified the config centre, but there's not even one single config item in it."); } else { Properties properties = new Properties(); @@ -128,16 +133,16 @@ public class ConfigCenterConfig extends AbstractConfig { return map; } - @Parameter(key = Constants.CONFIG_TYPE_KEY) - public String getType() { - return type; + + public String getProtocol() { + return protocol; } - public void setType(String type) { - this.type = type; + public void setProtocol(String protocol) { + this.protocol = protocol; } - @Parameter(key = Constants.CONFIG_ADDRESS_KEY) + @Parameter(excluded = true) public String getAddress() { return address; } @@ -268,4 +273,11 @@ public class ConfigCenterConfig extends AbstractConfig { public void setApplication(ApplicationConfig application) { this.application = application; } + + private void checkConfigCenter() { + if ((StringUtils.isEmpty(env) && StringUtils.isEmpty(address)) + || (StringUtils.isEmpty(protocol) && (StringUtils.isEmpty(address) || !address.contains("://")))) { + throw new IllegalStateException("You must specify the right parameter for configcenter."); + } + } } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java index 4d314ef..394a8f6 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java @@ -26,6 +26,7 @@ import org.apache.dubbo.common.utils.ConfigUtils; import org.apache.dubbo.common.utils.NamedThreadFactory; import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.config.annotation.Service; +import org.apache.dubbo.config.context.Environment; import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.metadata.integration.MetadataReportService; @@ -729,7 +730,19 @@ public class ServiceConfig<T> extends AbstractServiceConfig { } // backward compatibility if (protocols == null || protocols.isEmpty()) { - setProtocol(new ProtocolConfig()); + //check 'dubbo.protocols=dubboProtocolId,hessianProtocolId' and decide if we need multiple protocols + String protocolIds = Environment.getInstance().getStartupCompositeConf(null, null).getString("dubbo.protocols"); + if (StringUtils.isNotEmpty(protocolIds)) { + Arrays.stream(Constants.COMMA_SPLIT_PATTERN.split(protocolIds)) + .map(pId -> { + ProtocolConfig protocolConfig = new ProtocolConfig(); + protocolConfig.setId(pId); + return protocolConfig; + }) + .forEach(protocols::add); + } else { + setProtocol(new ProtocolConfig()); + } } for (ProtocolConfig protocolConfig : protocols) { if (StringUtils.isEmpty(protocolConfig.getName())) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java index 0a2bf12..c3e07cc 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/context/Environment.java @@ -25,6 +25,7 @@ import org.apache.dubbo.common.config.PropertiesConfiguration; import org.apache.dubbo.common.config.SystemConfiguration; import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.utils.StringUtils; +import org.apache.dubbo.config.ConfigCenterConfig; import org.apache.dubbo.governance.DynamicConfiguration; import org.apache.dubbo.governance.DynamicConfigurationFactory; @@ -49,6 +50,7 @@ public class Environment { private volatile DynamicConfiguration dynamicConfiguration; private volatile boolean isConfigCenterFirst = true; + private volatile ConfigCenterConfig configCenter; private Map<String, String> externalConfigurationMap = new HashMap<>(); private Map<String, String> appExternalConfigurationMap = new HashMap<>(); @@ -85,6 +87,26 @@ public class Environment { return environmentConfsHolder.computeIfAbsent(toKey(prefix, id), k -> new EnvironmentConfiguration(prefix, id)); } + public void setConfigCenter(ConfigCenterConfig configCenter) { + this.configCenter = configCenter; + } + + public synchronized void setExternalConfiguration(Map<String, String> externalConfiguration) { + this.externalConfigurationMap = externalConfiguration; + if (configCenter == null) { + configCenter = new ConfigCenterConfig(); + } + configCenter.init(); + } + + public synchronized void setAppExternalConfiguration(Map<String, String> appExternalConfiguration) { + this.appExternalConfigurationMap = appExternalConfiguration; + if (configCenter == null) { + configCenter = new ConfigCenterConfig(); + } + configCenter.init(); + } + public void updateExternalConfigurationMap(Map<String, String> externalMap) { this.externalConfigurationMap.putAll(externalMap); } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/support/Parameter.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/support/Parameter.java index 0183a22..56336aa 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/support/Parameter.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/support/Parameter.java @@ -42,4 +42,6 @@ public @interface Parameter { boolean append() default false; + boolean propertyKey() default true; + } \ No newline at end of file diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java index a0bc0a6..0ff972a 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java @@ -19,6 +19,7 @@ package org.apache.dubbo.config.spring; import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.ConfigCenterConfig; import org.apache.dubbo.config.spring.extension.SpringExtensionFactory; +import org.apache.dubbo.config.support.Parameter; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; @@ -83,18 +84,28 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing @Override public void setEnvironment(Environment environment) { if (auto) { - Object rawProperties = environment.getProperty("dubbo.properties", Object.class); - Map<String, String> externalProperties = new HashMap<>(); - try { - if (rawProperties instanceof Map) { - externalProperties.putAll((Map<String, String>) rawProperties); - } else if (rawProperties instanceof String) { - externalProperties.putAll(parseProperties((String) rawProperties)); - } + Map<String, String> externalProperties = getConfigurations(getConfigfile(), environment); + Map<String, String> appExternalProperties = getConfigurations("application." + getConfigfile(), environment); + org.apache.dubbo.config.context.Environment.getInstance().setConfigCenter(this); + org.apache.dubbo.config.context.Environment.getInstance().setExternalConfiguration(externalProperties); + org.apache.dubbo.config.context.Environment.getInstance().setAppExternalConfiguration(appExternalProperties); + } + } + + private Map<String, String> getConfigurations(String key, Environment environment) { + Object rawProperties = environment.getProperty(key, Object.class); + Map<String, String> externalProperties = new HashMap<>(); + try { + if (rawProperties instanceof Map) { + externalProperties.putAll((Map<String, String>) rawProperties); + } else if (rawProperties instanceof String) { + externalProperties.putAll(parseProperties((String) rawProperties)); + } - if (environment instanceof ConfigurableEnvironment && externalProperties.isEmpty()) { - ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment; - PropertySource propertySource = configurableEnvironment.getPropertySources().get("dubbo.properties"); + if (environment instanceof ConfigurableEnvironment && externalProperties.isEmpty()) { + ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment; + PropertySource propertySource = configurableEnvironment.getPropertySources().get(key); + if (propertySource != null) { Object source = propertySource.getSource(); if (source instanceof Map) { ((Map<String, Object>) source).forEach((k, v) -> { @@ -102,13 +113,14 @@ public class ConfigCenterBean extends ConfigCenterConfig implements Initializing }); } } - org.apache.dubbo.config.context.Environment.getInstance().updateExternalConfigurationMap(externalProperties); - } catch (Exception e) { - throw new IllegalStateException(e); } + } catch (Exception e) { + throw new IllegalStateException(e); } + return externalProperties; } + @Parameter(excluded = true) public boolean isAuto() { return auto; } diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd index 9810969..b1a2fc3 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd @@ -597,9 +597,9 @@ <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> - <xsd:attribute name="type" type="xsd:string" use="required"> + <xsd:attribute name="protocol" type="xsd:string" use="optional"> <xsd:annotation> - <xsd:documentation><![CDATA[ The config center type. ]]></xsd:documentation> + <xsd:documentation><![CDATA[ The config center protocol. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="address" type="xsd:string" use="optional"> diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd index b2ff6cb..51b29f5 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd @@ -591,9 +591,9 @@ <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> - <xsd:attribute name="type" type="xsd:string" use="required"> + <xsd:attribute name="protocol" type="xsd:string"> <xsd:annotation> - <xsd:documentation><![CDATA[ The config center type. ]]></xsd:documentation> + <xsd:documentation><![CDATA[ The config center protocol. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="address" type="xsd:string" use="optional"> diff --git a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml index 108b566..dc303db 100644 --- a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml +++ b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml @@ -27,7 +27,7 @@ <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181"/> - <dubbo:configcenter type="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1" + <dubbo:configcenter protocol="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1" configfile="dubbo.properties"/> <!-- generate proxy for the remote service, then demoService can be used in the same way as the diff --git a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml index 7af535e..566a7c7 100644 --- a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml +++ b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml @@ -28,7 +28,7 @@ <dubbo:registry group="dubboregistrygroup1" address="zookeeper://127.0.0.1:2181" simple="false"> </dubbo:registry> - <dubbo:configcenter type="zookeeper" address="127.0.0.1:2181" namespace="dubboregistrygroup1" + <dubbo:configcenter address="zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182" namespace="dubboregistrygroup1" configfile="dubbo.properties" appname="demo-provider"/> <!-- use dubbo protocol to export service on port 20880 --> diff --git a/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/DynamicConfigurationFactory.java b/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/DynamicConfigurationFactory.java index d986eae..d4340d8 100644 --- a/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/DynamicConfigurationFactory.java +++ b/dubbo-governance/dubbo-governance-api/src/main/java/org/apache/dubbo/governance/DynamicConfigurationFactory.java @@ -27,7 +27,7 @@ import org.apache.dubbo.common.extension.SPI; @SPI("nop") public interface DynamicConfigurationFactory { - @Adaptive({Constants.CONFIG_TYPE_KEY}) + @Adaptive({Constants.PROTOCOL_KEY}) DynamicConfiguration getDynamicConfiguration(URL url); DynamicConfiguration getExistedDynamicConfiguration(); diff --git a/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java b/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java index 749f290..f74ec14 100644 --- a/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java +++ b/dubbo-governance/dubbo-governance-apollo/src/main/java/org/apache/dubbo/governance/support/apollo/ApolloDynamicConfiguration.java @@ -59,7 +59,7 @@ public class ApolloDynamicConfiguration extends AbstractDynamicConfiguration<Con // String configEnv = env.getCompositeConf().getString(ENV_KEY); // String configCluster = env.getCompositeConf().getString(CLUSTER_KEY); String configEnv = url.getParameter(Constants.CONFIG_ENV_KEY); - String configAddr = url.getAddress(); + String configAddr = url.getBackupAddress(); String configCluster = url.getParameter(Constants.CONFIG_CLUSTER_KEY); if (configEnv != null) { System.setProperty(APOLLO_ENV_KEY, configEnv); diff --git a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java index e35f95d..15e24bd 100644 --- a/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java +++ b/dubbo-governance/dubbo-governance-zookeeper/src/main/java/org/apache/dubbo/governance/support/archaius/ArchaiusDynamicConfiguration.java @@ -43,7 +43,7 @@ public class ArchaiusDynamicConfiguration extends AbstractDynamicConfiguration<R // String address = env.getCompositeConf().getString(ADDRESS_KEY); // String app = env.getCompositeConf().getString(APP_KEY); - String address = url.getParameter(Constants.CONFIG_ADDRESS_KEY, url.getAddress()); + String address = url.getBackupAddress(); if (!address.equals(Constants.ANYHOST_VALUE)) { System.setProperty(ZooKeeperConfigurationSource.ARCHAIUS_SOURCE_ADDRESS_KEY, address); }