You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2023/10/10 01:47:26 UTC
[servicecomb-java-chassis] 01/25: [SCB-2008]change DynamicPropertyFactory to Environment: in huawei cloud
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));
}
}