You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ya...@apache.org on 2019/08/29 12:39:09 UTC
[servicecomb-java-chassis] 01/03: [SCB-1450] Change Registry
WebsocketClient work module to a worker verticle,
So it can support blocking-task, like Service Center watching task.
This is an automated email from the ASF dual-hosted git repository.
yaohaishi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 1e16ca4d5a151e126b6071dcdd1e8d75669573cd
Author: Liuhuaizhou <li...@163.com>
AuthorDate: Tue Aug 20 14:45:45 2019 +0800
[SCB-1450] Change Registry WebsocketClient work module to a worker verticle,So it can support blocking-task,like Service Center watching task.
---
.../client/http/AbstractClientPool.java | 27 ++++++++++++++++++----
.../client/http/HttpClientPool.java | 5 ++++
.../client/http/WebsocketClientPool.java | 5 ++++
3 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
index a631b96..846fea8 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/AbstractClientPool.java
@@ -17,6 +17,9 @@
package org.apache.servicecomb.serviceregistry.client.http;
+import com.netflix.config.DynamicIntProperty;
+import com.netflix.config.DynamicPropertyFactory;
+
import org.apache.servicecomb.foundation.vertx.AddressResolverConfig;
import org.apache.servicecomb.foundation.vertx.VertxUtils;
import org.apache.servicecomb.foundation.vertx.client.ClientPoolManager;
@@ -42,27 +45,41 @@ public abstract class AbstractClientPool implements ClientPool {
public static final String PROXY_KEY = "sc.consumer";
+ private static final String EVENT_LOOP_POOL_SIZE = "servicecomb.service.registry.client.eventLoopPoolSize";
+
+ private static final String WORKER_POOL_SIZE = "servicecomb.service.registry.client.workerPoolSize";
+
+ private static final String WORKER_POOL_NAME = "registry-vert.x-worker-thread";
+
private ClientPoolManager<HttpClientWithContext> clientMgr;
public AbstractClientPool() {
create();
}
+ protected abstract boolean isWorker();
+
public HttpClientWithContext getClient() {
return this.clientMgr.findThreadBindClientPool();
}
public void create() {
+ DynamicIntProperty property = DynamicPropertyFactory.getInstance().getIntProperty(EVENT_LOOP_POOL_SIZE, 4);
+ DynamicIntProperty workerPoolSize = DynamicPropertyFactory.getInstance().getIntProperty(WORKER_POOL_SIZE, 4);
+
// 这里面是同步接口,且好像直接在事件线程中用,保险起见,先使用独立的vertx实例
- VertxOptions vertxOptions = new VertxOptions();
- vertxOptions.setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY));
+ VertxOptions vertxOptions = new VertxOptions()
+ .setAddressResolverOptions(AddressResolverConfig.getAddressResover(SSL_KEY))
+ .setEventLoopPoolSize(property.get());
Vertx vertx = VertxUtils.getOrCreateVertxByName("registry", vertxOptions);
HttpClientOptions httpClientOptions = createHttpClientOptions();
clientMgr = new ClientPoolManager<>(vertx, new HttpClientPoolFactory(httpClientOptions));
- DeploymentOptions deployOptions =
- VertxUtils.createClientDeployOptions(this.clientMgr,
- ServiceRegistryConfig.INSTANCE.getWorkerPoolSize());
+ DeploymentOptions deployOptions = VertxUtils.createClientDeployOptions(this.clientMgr,
+ ServiceRegistryConfig.INSTANCE.getInstances())
+ .setWorker(isWorker())
+ .setWorkerPoolName(WORKER_POOL_NAME)
+ .setWorkerPoolSize(workerPoolSize.get());
try {
VertxUtils.blockDeploy(vertx, ClientVerticle.class, deployOptions);
} catch (InterruptedException e) {
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
index efbee4c..71b400b 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/HttpClientPool.java
@@ -40,6 +40,11 @@ public final class HttpClientPool extends AbstractClientPool {
}
@Override
+ protected boolean isWorker() {
+ return false;
+ }
+
+ @Override
public HttpClientOptions createHttpClientOptions() {
HttpVersion ver = ServiceRegistryConfig.INSTANCE.getHttpVersion();
HttpClientOptions httpClientOptions = new HttpClientOptions();
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
index a8b14ab..3242043 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketClientPool.java
@@ -38,6 +38,11 @@ public final class WebsocketClientPool extends AbstractClientPool {
}
@Override
+ protected boolean isWorker() {
+ return true;
+ }
+
+ @Override
public HttpClientOptions createHttpClientOptions() {
HttpVersion ver = ServiceRegistryConfig.INSTANCE.getHttpVersion();
HttpClientOptions httpClientOptions = new HttpClientOptions();