This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 7395e9221449005362c31a80c5f53c225d90dcf4 Author: liubao <bi...@qq.com> AuthorDate: Thu Sep 21 14:18:30 2023 +0800 [SCB-2008]change DynamicPropertyFactory to Environment: in huawei cloud --- .../darklaunch/DarklaunchServerListFilter.java | 10 +- .../dashboard/monitor/DashboardConfiguration.java | 7 ++ .../huaweicloud/dashboard/monitor/DataFactory.java | 12 ++- .../monitor/DefaultMonitorDataPublisher.java | 20 ++-- .../monitor/MetricsMonitorDataProvider.java | 22 ++++- .../dashboard/monitor/MonitorBootListener.java | 10 +- .../dashboard/monitor/data/MonitorConstant.java | 109 ++++++++------------- .../huaweicloud/servicestage/CasEnvConfig.java | 39 ++++---- 8 files changed, 116 insertions(+), 113 deletions(-) diff --git a/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/DarklaunchServerListFilter.java b/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/DarklaunchServerListFilter.java index 5c53515d5..d380a8f25 100644 --- a/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/DarklaunchServerListFilter.java +++ b/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/DarklaunchServerListFilter.java @@ -22,12 +22,10 @@ import java.util.List; import java.util.Random; import org.apache.servicecomb.core.Invocation; +import org.apache.servicecomb.foundation.common.LegacyPropertyFactory; import org.apache.servicecomb.loadbalance.ServerListFilterExt; import org.apache.servicecomb.loadbalance.ServiceCombServer; -import com.netflix.config.DynamicPropertyFactory; -import com.netflix.config.DynamicStringProperty; - public class DarklaunchServerListFilter implements ServerListFilterExt { private static final String POLICY_SERVICE_COMB = "servicecomb.darklaunch.policy.%s"; @@ -51,10 +49,8 @@ public class DarklaunchServerListFilter implements ServerListFilterExt { @Override public List<ServiceCombServer> getFilteredListOfServers(List<ServiceCombServer> serverList, Invocation invocation) { - DynamicStringProperty ruleStr = DynamicPropertyFactory.getInstance().getStringProperty( - String.format(POLICY_SERVICE_COMB, invocation.getMicroserviceName()), null - ); - DarklaunchRule rule = DarklaunchRule.parse(ruleStr.get()); + DarklaunchRule rule = DarklaunchRule.parse(LegacyPropertyFactory + .getStringProperty(String.format(POLICY_SERVICE_COMB, invocation.getMicroserviceName()))); if (rule == null) { return serverList; } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java index bbe27342f..2949ec34c 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java @@ -16,11 +16,18 @@ */ package org.apache.servicecomb.huaweicloud.dashboard.monitor; +import org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant; import org.springframework.context.annotation.Bean; +import org.springframework.core.env.Environment; public class DashboardConfiguration { @Bean public MonitorInformationCollector monitorInformationCollector() { return new MonitorInformationCollector(); } + + @Bean + public MonitorConstant monitorConstant(Environment environment) { + return new MonitorConstant(environment); + } } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DataFactory.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DataFactory.java index 12ba9052a..4889683c1 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DataFactory.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DataFactory.java @@ -23,13 +23,12 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; -import javax.inject.Inject; - import org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant; import org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDataProvider; import org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDataPublisher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import io.netty.util.concurrent.DefaultThreadFactory; @@ -40,12 +39,15 @@ public class DataFactory { private boolean hasStart = false; - @Inject + @Autowired private List<MonitorDataProvider> dataProviders; - @Inject + @Autowired private MonitorDataPublisher publisher; + @Autowired + private MonitorConstant monitorConstant; + private ScheduledExecutorService executorService = null; @@ -81,7 +83,7 @@ public class DataFactory { } catch (Throwable e) { LOGGER.error("send monitor data error.", e); } - }, MonitorConstant.getInterval(), MonitorConstant.getInterval(), TimeUnit.MILLISECONDS); + }, monitorConstant.getInterval(), monitorConstant.getInterval(), TimeUnit.MILLISECONDS); hasStart = true; } } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java index de350f787..8846a760e 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java @@ -44,12 +44,20 @@ import org.apache.servicecomb.http.client.common.HttpTransportFactory; import org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant; import org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDataProvider; import org.apache.servicecomb.huaweicloud.dashboard.monitor.model.MonitorDataPublisher; +import org.springframework.beans.factory.annotation.Autowired; public class DefaultMonitorDataPublisher implements MonitorDataPublisher { private static final String SSL_KEY = "mc.consumer"; private DashboardClient dashboardClient; + private MonitorConstant monitorConstant; + + @Autowired + public void setMonitorConstant(MonitorConstant monitorConstant) { + this.monitorConstant = monitorConstant; + } + @Override public void init() { DashboardAddressManager addressManager = createDashboardAddressManager(); @@ -83,16 +91,16 @@ public class DefaultMonitorDataPublisher implements MonitorDataPublisher { Configuration localConfiguration) { List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class); - if (MonitorConstant.isProxyEnable()) { + if (monitorConstant.isProxyEnable()) { HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(). setDefaultRequestConfig(requestConfig); - HttpHost proxy = new HttpHost(MonitorConstant.getProxyHost(), - MonitorConstant.getProxyPort(), "http"); // now only support http proxy + HttpHost proxy = new HttpHost(monitorConstant.getProxyHost(), + monitorConstant.getProxyPort(), "http"); // now only support http proxy httpClientBuilder.setProxy(proxy); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(proxy), - new UsernamePasswordCredentials(MonitorConstant.getProxyUsername(), - MonitorConstant.getProxyPasswd())); + new UsernamePasswordCredentials(monitorConstant.getProxyUsername(), + monitorConstant.getProxyPasswd())); httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return HttpTransportFactory @@ -105,7 +113,7 @@ public class DefaultMonitorDataPublisher implements MonitorDataPublisher { return HttpTransportFactory .createHttpTransport( TransportUtils - .createSSLProperties(MonitorConstant.sslEnabled(), localConfiguration, SSL_KEY), + .createSSLProperties(monitorConstant.sslEnabled(), localConfiguration, SSL_KEY), getRequestAuthHeaderProvider(authHeaderProviders), requestConfig); } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MetricsMonitorDataProvider.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MetricsMonitorDataProvider.java index d20f23f8a..5379c6684 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MetricsMonitorDataProvider.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MetricsMonitorDataProvider.java @@ -35,9 +35,9 @@ import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPer import org.apache.servicecomb.metrics.core.publish.model.invocation.PerfInfo; import org.apache.servicecomb.registry.sc.SCRegistration; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; import com.google.common.eventbus.Subscribe; -import com.netflix.config.DynamicPropertyFactory; import com.netflix.spectator.api.Meter; /** @@ -57,6 +57,10 @@ public class MetricsMonitorDataProvider implements MonitorDataProvider { private SCRegistration scRegistration; + private Environment environment; + + private MonitorConstant monitorConstant; + public MetricsMonitorDataProvider() { EventManager.register(this); } @@ -66,16 +70,24 @@ public class MetricsMonitorDataProvider implements MonitorDataProvider { this.scRegistration = scRegistration; } + @Autowired + public void setEnvironment(Environment environment) { + this.environment = environment; + } + + @Autowired + public void setMonitorConstant(MonitorConstant monitorConstant) { + this.monitorConstant = monitorConstant; + } + @Override public boolean enabled() { - return DynamicPropertyFactory.getInstance() - .getBooleanProperty("servicecomb.monitor.provider.metrics.enabled", true) - .get(); + return environment.getProperty("servicecomb.monitor.provider.metrics.enabled", boolean.class, true); } @Override public String getURL() { - return String.format(MonitorConstant.MONITORS_URI, scRegistration.getMicroserviceInstance().getServiceName()); + return String.format(monitorConstant.getMonitorUri(), scRegistration.getMicroserviceInstance().getServiceName()); } @Override diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MonitorBootListener.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MonitorBootListener.java index 530e5330c..06dd4aa6d 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MonitorBootListener.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/MonitorBootListener.java @@ -17,19 +17,21 @@ package org.apache.servicecomb.huaweicloud.dashboard.monitor; -import javax.inject.Inject; - import org.apache.servicecomb.core.BootListener; import org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant; +import org.springframework.beans.factory.annotation.Autowired; public class MonitorBootListener implements BootListener { - @Inject + @Autowired private DataFactory dataFactory; + @Autowired + private MonitorConstant monitorConstant; + @Override public void onBootEvent(BootEvent event) { - if (!MonitorConstant.isMonitorEnabled()) { + if (!monitorConstant.isMonitorEnabled()) { return; } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/data/MonitorConstant.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/data/MonitorConstant.java index 9bf37e298..19b207878 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/data/MonitorConstant.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/data/MonitorConstant.java @@ -17,22 +17,9 @@ package org.apache.servicecomb.huaweicloud.dashboard.monitor.data; -import com.netflix.config.DynamicBooleanProperty; -import com.netflix.config.DynamicIntProperty; -import com.netflix.config.DynamicPropertyFactory; -import com.netflix.config.DynamicStringProperty; +import org.springframework.core.env.Environment; public class MonitorConstant { - public static final String DOMAIN_NAME = getDomainName(); - - public static final String CURRENT_VERSION = getApiVersion(); - - public static final String VERSION_V1 = "v1"; - - public static final String PREFIX_V2 = String.format("/v2/%s/csemonitor", DOMAIN_NAME); - - public static final String MONITORS_URI; - public static final String SYSTEM_KEY_DASHBOARD_SERVICE = "DashboardService"; public static final String MONITOR_URI = "servicecomb.monitor.client.serverUri"; @@ -53,99 +40,89 @@ public class MonitorConstant { public static final int DEFAULT_INTERVAL = 10000; - public static final int MAX_RETRY_TIMES = 3; + private final String DOMAIN_NAME; - static { - if (VERSION_V1.equals(CURRENT_VERSION)) { - MONITORS_URI = "/csemonitor/v1/metric?service=%s"; - } else { - MONITORS_URI = PREFIX_V2 + "/metric?service=%s"; - } - } + private final String CURRENT_VERSION; + + private final String VERSION_V1; + + private final String PREFIX_V2; + + private final String monitorsUri; + + private Environment environment; - public static final String TRANSACTION_URI; + public MonitorConstant(Environment environment) { + this.environment = environment; + this.VERSION_V1 = "v1"; + this.DOMAIN_NAME = getDomainName(); + this.PREFIX_V2 = String.format("/v2/%s/csemonitor", DOMAIN_NAME); + this.CURRENT_VERSION = getApiVersion(); - static { if (VERSION_V1.equals(CURRENT_VERSION)) { - TRANSACTION_URI = "/csemonitor/v1/transaction"; + monitorsUri = "/csemonitor/v1/metric?service=%s"; } else { - TRANSACTION_URI = PREFIX_V2 + "/transaction"; + monitorsUri = PREFIX_V2 + "/metric?service=%s"; } } - public static String getTanentName() { - DynamicStringProperty property = DynamicPropertyFactory.getInstance(). - getStringProperty("servicecomb.config.client.tenantName", "default"); - return property.getValue(); + public String getMonitorUri() { + return this.monitorsUri; } - public static String getDomainName() { - DynamicStringProperty property = DynamicPropertyFactory.getInstance(). - getStringProperty("servicecomb.config.client.domainName", "default"); - return property.getValue(); + public String getDomainName() { + return environment.getProperty("servicecomb.config.client.domainName", "default"); } - public static String getApiVersion() { - DynamicStringProperty property = DynamicPropertyFactory.getInstance(). - getStringProperty("servicecomb.monitor.client.api.version", "v2"); - return property.getValue(); + public String getApiVersion() { + return environment.getProperty("servicecomb.monitor.client.api.version", "v2"); } - public static String getServerUrl() { - DynamicStringProperty property = DynamicPropertyFactory.getInstance(). - getStringProperty("servicecomb.monitor.client.serverUri", null); - return property.getValue(); + public String getServerUrl() { + return environment.getProperty("servicecomb.monitor.client.serverUri"); } - public static boolean sslEnabled() { - DynamicBooleanProperty property = DynamicPropertyFactory.getInstance(). - getBooleanProperty("servicecomb.monitor.client.sslEnabled", true); - return property.getValue(); + public boolean sslEnabled() { + return environment.getProperty("servicecomb.monitor.client.sslEnabled", boolean.class, true); } - public static boolean isMonitorEnabled() { - DynamicBooleanProperty property = DynamicPropertyFactory.getInstance(). - getBooleanProperty("servicecomb.monitor.client.enabled", false); - return property.getValue(); + public boolean isMonitorEnabled() { + return environment.getProperty("servicecomb.monitor.client.enabled", boolean.class, false); } - public static int getConnectionTimeout() { - DynamicIntProperty property = DynamicPropertyFactory.getInstance(). - getIntProperty("servicecomb.monitor.client.timeout", DEFAULT_TIMEOUT); - return property.getValue(); + public int getConnectionTimeout() { + return environment.getProperty("servicecomb.monitor.client.timeout", int.class, DEFAULT_TIMEOUT); } - public static int getInterval() { - DynamicIntProperty property = DynamicPropertyFactory.getInstance(). - getIntProperty("servicecomb.monitor.client.interval", DEFAULT_INTERVAL); - int val = property.getValue(); - return Math.max(val, MIN_INTERVAL_MILLISECONDS); + public int getInterval() { + return Math.max(environment.getProperty("servicecomb.monitor.client.interval", int.class, DEFAULT_INTERVAL), + MIN_INTERVAL_MILLISECONDS); } - public static Boolean isProxyEnable() { + public Boolean isProxyEnable() { return Boolean.parseBoolean(getProperty("false", PROXY_ENABLE)); } - public static String getProxyHost() { + public String getProxyHost() { return getProperty("127.0.0.1", PROXY_HOST); } - public static int getProxyPort() { + public int getProxyPort() { return Integer.parseInt(getProperty("8080", PROXY_PORT)); } - public static String getProxyUsername() { + public String getProxyUsername() { return getProperty(null, PROXY_USERNAME); } - public static String getProxyPasswd() { + public String getProxyPasswd() { return getProperty(null, PROXY_PASSWD); } - private static String getProperty(String defaultValue, String... keys) { + private String getProperty(String defaultValue, String... keys) { String property = null; for (String key : keys) { - property = DynamicPropertyFactory.getInstance().getStringProperty(key, null).get(); + property = environment.getProperty(key); if (property != null) { break; } diff --git a/huawei-cloud/servicestage/src/main/java/org/apache/servicecomb/huaweicloud/servicestage/CasEnvConfig.java b/huawei-cloud/servicestage/src/main/java/org/apache/servicecomb/huaweicloud/servicestage/CasEnvConfig.java index 93c93fbcf..baadb927b 100644 --- a/huawei-cloud/servicestage/src/main/java/org/apache/servicecomb/huaweicloud/servicestage/CasEnvConfig.java +++ b/huawei-cloud/servicestage/src/main/java/org/apache/servicecomb/huaweicloud/servicestage/CasEnvConfig.java @@ -25,8 +25,7 @@ import java.util.Map.Entry; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; - -import com.netflix.config.DynamicPropertyFactory; +import org.apache.servicecomb.foundation.common.LegacyPropertyFactory; public class CasEnvConfig { private static final String APPLICATION_ID = "CAS_APPLICATION_ID"; @@ -51,36 +50,36 @@ public class CasEnvConfig { return rs; } return Arrays.stream(value.split(",")).map(v -> v.split(":")) - .filter(v -> v.length == 2) - .collect(Collectors.toMap(v -> v[0], v -> v[1])); + .filter(v -> v.length == 2) + .collect(Collectors.toMap(v -> v[0], v -> v[1])); } public Map<String, String> getNonEmptyInstanceProperties() { Map<String, String> map = new HashMap<>(); - map.put(APPLICATION_ID, DynamicPropertyFactory - .getInstance().getStringProperty(APPLICATION_ID, EMPTY).get()); - map.put(COMPONENT_NAME, DynamicPropertyFactory - .getInstance().getStringProperty(COMPONENT_NAME, EMPTY).get()); - map.put(INSTANCE_VERSION, DynamicPropertyFactory - .getInstance().getStringProperty(INSTANCE_VERSION, EMPTY).get()); - map.put(INSTANCE_ID, DynamicPropertyFactory - .getInstance().getStringProperty(INSTANCE_ID, EMPTY).get()); - map.put(ENVIRONMENT_ID, DynamicPropertyFactory - .getInstance().getStringProperty(ENVIRONMENT_ID, EMPTY).get()); + map.put(APPLICATION_ID, LegacyPropertyFactory + .getStringProperty(APPLICATION_ID, EMPTY)); + map.put(COMPONENT_NAME, LegacyPropertyFactory + .getStringProperty(COMPONENT_NAME, EMPTY)); + map.put(INSTANCE_VERSION, LegacyPropertyFactory + .getStringProperty(INSTANCE_VERSION, EMPTY)); + map.put(INSTANCE_ID, LegacyPropertyFactory + .getStringProperty(INSTANCE_ID, EMPTY)); + map.put(ENVIRONMENT_ID, LegacyPropertyFactory + .getStringProperty(ENVIRONMENT_ID, EMPTY)); Map<String, String> instanceProps = map.entrySet().stream() - .filter(entry -> StringUtils.isNotEmpty(entry.getValue())) - .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); + .filter(entry -> StringUtils.isNotEmpty(entry.getValue())) + .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); - instanceProps.putAll(parseProps(DynamicPropertyFactory - .getInstance().getStringProperty(INSTANCE_PROPS, EMPTY).get())); + instanceProps.putAll(parseProps(LegacyPropertyFactory + .getStringProperty(INSTANCE_PROPS, EMPTY))); return instanceProps; } public Map<String, String> getNonEmptyServiceProperties() { - return parseProps(DynamicPropertyFactory - .getInstance().getStringProperty(SERVICE_PROPS, EMPTY).get()); + return parseProps(LegacyPropertyFactory + .getStringProperty(SERVICE_PROPS, EMPTY)); } }