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 2021/06/17 07:54:27 UTC
[servicecomb-java-chassis] branch master updated: [SCB-2279]config
service client should support proxy (#2419)
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
The following commit(s) were added to refs/heads/master by this push:
new 3a23efb [SCB-2279]config service client should support proxy (#2419)
3a23efb is described below
commit 3a23efb4813111cdc3b19e0c5abf302a13b3b5c0
Author: liubao68 <bi...@qq.com>
AuthorDate: Thu Jun 17 15:54:20 2021 +0800
[SCB-2279]config service client should support proxy (#2419)
---
.../http/client/common/HttpTransportFactory.java | 27 +++++++---
.../apache/servicecomb/deployment/Deployment.java | 5 --
.../servicecomb/config/ConfigCenterConfig.java | 57 ----------------------
.../ConfigCenterConfigurationSourceImpl.java | 40 ++++++++++++---
.../apache/servicecomb/config/kie/KieConfig.java | 24 ---------
.../config/kie/KieConfigurationSourceImpl.java | 32 ++++++++++--
6 files changed, 81 insertions(+), 104 deletions(-)
diff --git a/clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java b/clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java
index d9188ce..b117932 100644
--- a/clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java
+++ b/clients/http-client-common/src/main/java/org/apache/servicecomb/http/client/common/HttpTransportFactory.java
@@ -28,6 +28,7 @@ import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.servicecomb.foundation.ssl.SSLManager;
import org.apache.servicecomb.http.client.auth.RequestAuthHeaderProvider;
+import org.apache.servicecomb.http.client.common.HttpConfiguration.SSLProperties;
public class HttpTransportFactory {
// All parameters set to 5 seconds now.
@@ -45,7 +46,25 @@ public class HttpTransportFactory {
}
public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
+ RequestAuthHeaderProvider requestAuthHeaderProvider, HttpClientBuilder httpClientBuilder) {
+ PoolingHttpClientConnectionManager connectionManager = getPoolingHttpClientConnectionManager(sslProperties);
+ httpClientBuilder.setConnectionManager(connectionManager).disableCookieManagement();
+ return new HttpTransportImpl(httpClientBuilder.build(), requestAuthHeaderProvider);
+ }
+
+ public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
RequestAuthHeaderProvider requestAuthHeaderProvider, RequestConfig config) {
+ PoolingHttpClientConnectionManager connectionManager = getPoolingHttpClientConnectionManager(sslProperties);
+
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().
+ setDefaultRequestConfig(config).
+ setConnectionManager(connectionManager).
+ disableCookieManagement();
+
+ return new HttpTransportImpl(httpClientBuilder.build(), requestAuthHeaderProvider);
+ }
+
+ private static PoolingHttpClientConnectionManager getPoolingHttpClientConnectionManager(SSLProperties sslProperties) {
//register http/https socket factory
RegistryBuilder<ConnectionSocketFactory> builder = RegistryBuilder.<ConnectionSocketFactory>create();
builder.register("http", PlainConnectionSocketFactory.INSTANCE);
@@ -62,13 +81,7 @@ public class HttpTransportFactory {
connectionSocketFactoryRegistry);
connectionManager.setMaxTotal(MAX_TOTAL);
connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_PER_ROUTE);
-
- HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().
- setDefaultRequestConfig(config).
- setConnectionManager(connectionManager).
- disableCookieManagement();
-
- return new HttpTransportImpl(httpClientBuilder.build(), requestAuthHeaderProvider);
+ return connectionManager;
}
public static HttpTransport createHttpTransport(HttpConfiguration.SSLProperties sslProperties,
diff --git a/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java b/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
index dec140f..f26980e 100644
--- a/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
+++ b/deployment/src/main/java/org/apache/servicecomb/deployment/Deployment.java
@@ -17,14 +17,10 @@
package org.apache.servicecomb.deployment;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import com.google.common.annotations.VisibleForTesting;
-
public class Deployment {
private static List<DeploymentProvider> providerList = SPIServiceUtils.getSortedService(DeploymentProvider.class);
@@ -36,5 +32,4 @@ public class Deployment {
}
return null;
}
-
}
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
index 3c0a582..5a4030b 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfig.java
@@ -36,38 +36,16 @@ public final class ConfigCenterConfig {
private static final String AUTO_DISCOVERY_ENABLED = "servicecomb.service.registry.autodiscovery";
- private static final String REFRESH_MODE = "servicecomb.config.client.refreshMode";
-
- private static final String REFRESH_PORT = "servicecomb.config.client.refreshPort";
-
- private static final String TENANT_NAME = "servicecomb.config.client.tenantName";
-
private static final String DOMAIN_NAME = "servicecomb.config.client.domainName";
- private static final String TOKEN_NAME = "servicecomb.config.client.token";
-
- private static final String URI_API_VERSION = "servicecomb.config.client.api.version";
-
private static final String REFRESH_INTERVAL = "servicecomb.config.client.refresh_interval";
private static final String FIRST_REFRESH_INTERVAL = "servicecomb.config.client.first_refresh_interval";
private static final String FIRST_PULL_REQUIRED = "servicecomb.config.client.firstPullRequired";
- public static final String CONNECTION_TIME_OUT = "servicecomb.config.client.timeout.connection";
-
- public static final String EVENT_LOOP_SIZE = "servicecomb.config.client.eventLoopSize";
-
public static final String FILE_SOURCE = "servicecomb.config.client.fileSource";
- public static final String VERTICAL_INSTANCE_COUNT = "servicecomb.config.client.verticalInstanceCount";
-
- public static final String IDLE_TIMEOUT_IN_SECONDES = "servicecomb.config.client.idleTimeoutInSeconds";
-
- private static final int DEFAULT_REFRESH_MODE = 0;
-
- private static final int DEFAULT_REFRESH_PORT = 30104;
-
private static final int DEFAULT_REFRESH_INTERVAL = 30000;
private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;
@@ -83,30 +61,11 @@ public final class ConfigCenterConfig {
return finalConfig;
}
- public int getRefreshMode() {
- return finalConfig.getInt(REFRESH_MODE, DEFAULT_REFRESH_MODE);
- }
-
- public int getRefreshPort() {
- return finalConfig.getInt(REFRESH_PORT, DEFAULT_REFRESH_PORT);
- }
-
- public String getTenantName() {
- return finalConfig.getString(TENANT_NAME, "default");
- }
public String getDomainName() {
return finalConfig.getString(DOMAIN_NAME, "default");
}
- public String getToken() {
- return finalConfig.getString(TOKEN_NAME, null);
- }
-
- public String getApiVersion() {
- return finalConfig.getString(URI_API_VERSION, "v3");
- }
-
public boolean firstPullRequired() {
return finalConfig.getBoolean(FIRST_PULL_REQUIRED, false);
}
@@ -174,22 +133,6 @@ public final class ConfigCenterConfig {
return finalConfig.getBoolean(AUTO_DISCOVERY_ENABLED, false);
}
- public int getConnectionTimeout() {
- return finalConfig.getInt(CONNECTION_TIME_OUT, 1000);
- }
-
- public int getEventLoopSize() {
- return finalConfig.getInt(EVENT_LOOP_SIZE, 2);
- }
-
- public int getVerticalInstanceCount() {
- return finalConfig.getInt(VERTICAL_INSTANCE_COUNT, 1);
- }
-
- public int getIdleTimeoutInSeconds() {
- return finalConfig.getInt(IDLE_TIMEOUT_IN_SECONDES, 60);
- }
-
public String getEnvironment() {
return BootStrapProperties.readServiceEnvironment(finalConfig);
}
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
index 4be4fe7..9d2923e 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/ConfigCenterConfigurationSourceImpl.java
@@ -24,7 +24,13 @@ import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.commons.configuration.Configuration;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.servicecomb.config.center.client.AddressManager;
import org.apache.servicecomb.config.center.client.ConfigCenterClient;
import org.apache.servicecomb.config.center.client.ConfigCenterManager;
@@ -53,7 +59,7 @@ import com.netflix.config.WatchedUpdateResult;
public class ConfigCenterConfigurationSourceImpl implements ConfigCenterConfigurationSource {
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigCenterConfigurationSourceImpl.class);
- private List<WatchedUpdateListener> listeners = new CopyOnWriteArrayList<>();
+ private final List<WatchedUpdateListener> listeners = new CopyOnWriteArrayList<>();
private ConfigCenterManager configCenterManager;
@@ -83,9 +89,8 @@ public class ConfigCenterConfigurationSourceImpl implements ConfigCenterConfigur
AddressManager kieAddressManager = configKieAddressManager();
- RequestConfig.Builder requestBuilder = HttpTransportFactory.defaultRequestConfig();
-
- HttpTransport httpTransport = createHttpTransport(kieAddressManager.sslEnabled(), requestBuilder.build(),
+ HttpTransport httpTransport = createHttpTransport(kieAddressManager,
+ HttpTransportFactory.defaultRequestConfig().build(),
localConfiguration);
ConfigCenterClient configCenterClient = new ConfigCenterClient(kieAddressManager, httpTransport);
EventManager.register(this);
@@ -136,13 +141,33 @@ public class ConfigCenterConfigurationSourceImpl implements ConfigCenterConfigur
return request;
}
- private HttpTransport createHttpTransport(boolean sslEnabled, RequestConfig requestConfig,
+ private HttpTransport createHttpTransport(AddressManager kieAddressManager, RequestConfig requestConfig,
Configuration localConfiguration) {
List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class);
+ if (ConfigCenterConfig.INSTANCE.isProxyEnable()) {
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().
+ setDefaultRequestConfig(requestConfig);
+ HttpHost proxy = new HttpHost(ConfigCenterConfig.INSTANCE.getProxyHost(),
+ ConfigCenterConfig.INSTANCE.getProxyPort(), "http"); // now only support http proxy
+ httpClientBuilder.setProxy(proxy);
+ CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(new AuthScope(proxy),
+ new UsernamePasswordCredentials(ConfigCenterConfig.INSTANCE.getProxyUsername(),
+ ConfigCenterConfig.INSTANCE.getProxyPasswd()));
+ httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
+
+ return HttpTransportFactory
+ .createHttpTransport(
+ TransportUtils
+ .createSSLProperties(kieAddressManager.sslEnabled(), localConfiguration, ConfigCenterConfig.SSL_TAG),
+ getRequestAuthHeaderProvider(authHeaderProviders), httpClientBuilder);
+ }
+
return HttpTransportFactory
.createHttpTransport(
- TransportUtils.createSSLProperties(sslEnabled, localConfiguration, ConfigCenterConfig.SSL_TAG),
+ TransportUtils
+ .createSSLProperties(kieAddressManager.sslEnabled(), localConfiguration, ConfigCenterConfig.SSL_TAG),
getRequestAuthHeaderProvider(authHeaderProviders), requestConfig);
}
@@ -155,10 +180,9 @@ public class ConfigCenterConfigurationSourceImpl implements ConfigCenterConfigur
}
private AddressManager configKieAddressManager() {
- AddressManager kieAddressManager = new AddressManager(ConfigCenterConfig.INSTANCE.getDomainName(),
+ return new AddressManager(ConfigCenterConfig.INSTANCE.getDomainName(),
Deployment
.getSystemBootStrapInfo(ConfigCenterDefaultDeploymentProvider.SYSTEM_KEY_CONFIG_CENTER).getAccessURL());
- return kieAddressManager;
}
private void updateConfiguration(WatchedUpdateResult result) {
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
index 4bd8d04..7f93e1d 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
@@ -60,14 +60,6 @@ public class KieConfig {
public static final String FILE_SOURCE = "servicecomb.config.client.fileSource";
- public static final String CONNECTION_TIME_OUT = "servicecomb.kie.client.timeout.connection";
-
- public static final String EVENT_LOOP_SIZE = "servicecomb.kie.client.eventLoopSize";
-
- public static final String VERTICAL_INSTANCE_COUNT = "servicecomb.kie.client.verticalInstanceCount";
-
- public static final String IDLE_TIMEOUT_IN_SECONDES = "servicecomb.kie.client.idleTimeoutInSeconds";
-
private static final int DEFAULT_REFRESH_INTERVAL = 3000;
private static final int DEFAULT_POLLING_WAIT_TIME = 10;
@@ -105,22 +97,6 @@ public class KieConfig {
return Collections.EMPTY_LIST;
}
- public int getConnectionTimeOut() {
- return finalConfig.getInt(CONNECTION_TIME_OUT, 1000);
- }
-
- public int getEventLoopSize() {
- return finalConfig.getInt(EVENT_LOOP_SIZE, 2);
- }
-
- public int getVerticalInstanceCount() {
- return finalConfig.getInt(VERTICAL_INSTANCE_COUNT, 1);
- }
-
- public int getIdleTimeoutInSeconds() {
- return finalConfig.getInt(IDLE_TIMEOUT_IN_SECONDES, 60);
- }
-
public String getVersion() {
return BootStrapProperties.readServiceVersion(finalConfig);
}
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
index 6910822..48a5c71 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
@@ -26,7 +26,13 @@ import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.servicecomb.config.common.ConfigConverter;
import org.apache.servicecomb.config.common.ConfigurationChangedEvent;
import org.apache.servicecomb.config.kie.client.KieClient;
@@ -85,7 +91,7 @@ public class KieConfigurationSourceImpl implements ConfigCenterConfigurationSour
requestBuilder.setConnectionRequestTimeout(KieConfig.INSTANCE.getPollingWaitTime() * 2 * 1000);
requestBuilder.setSocketTimeout(KieConfig.INSTANCE.getPollingWaitTime() * 2 * 1000);
}
- HttpTransport httpTransport = createHttpTransport(kieAddressManager.sslEnabled(), requestBuilder.build(),
+ HttpTransport httpTransport = createHttpTransport(kieAddressManager, requestBuilder.build(),
localConfiguration);
KieConfiguration kieConfiguration = createKieConfiguration();
KieClient kieClient = new KieClient(kieAddressManager, httpTransport, kieConfiguration);
@@ -117,13 +123,33 @@ public class KieConfigurationSourceImpl implements ConfigCenterConfigurationSour
.setServiceName(KieConfig.INSTANCE.getServiceName());
}
- private HttpTransport createHttpTransport(boolean sslEnabled, RequestConfig requestConfig,
+ private HttpTransport createHttpTransport(KieAddressManager kieAddressManager, RequestConfig requestConfig,
Configuration localConfiguration) {
List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class);
+ if (KieConfig.INSTANCE.isProxyEnable()) {
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().
+ setDefaultRequestConfig(requestConfig);
+ HttpHost proxy = new HttpHost(KieConfig.INSTANCE.getProxyHost(),
+ KieConfig.INSTANCE.getProxyPort(),"http"); // now only support http proxy
+ httpClientBuilder.setProxy(proxy);
+ CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(new AuthScope(proxy),
+ new UsernamePasswordCredentials(KieConfig.INSTANCE.getProxyUsername(),
+ KieConfig.INSTANCE.getProxyPasswd()));
+ httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
+
+ return HttpTransportFactory
+ .createHttpTransport(
+ TransportUtils
+ .createSSLProperties(kieAddressManager.sslEnabled(), localConfiguration, KieConfig.SSL_TAG),
+ getRequestAuthHeaderProvider(authHeaderProviders), httpClientBuilder);
+ }
+
return HttpTransportFactory
.createHttpTransport(
- TransportUtils.createSSLProperties(sslEnabled, localConfiguration, KieConfig.SSL_TAG),
+ TransportUtils
+ .createSSLProperties(kieAddressManager.sslEnabled(), localConfiguration, KieConfig.SSL_TAG),
getRequestAuthHeaderProvider(authHeaderProviders), requestConfig);
}