From 0e61224ed4d2149669937d2e904596e61b03b28e Mon Sep 17 00:00:00 2001 From: Arzy Date: Fri, 9 Aug 2019 16:24:53 +0800 Subject: [PATCH 1/3] add nacos support & change dubbo version to 2.7.3 --- pom.xml | 18 ++++ .../metadata/impl/NacosMetadataCollector.java | 89 +++++++++++++++++++ ...che.dubbo.proxy.metadata.MetadataCollector | 1 + src/main/resources/application.yml | 4 +- 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java diff --git a/pom.xml b/pom.xml index e5a9933..9d72406 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,7 @@ 1.2.17 2.12.0 2.7.3 + 1.1.3 @@ -60,6 +61,11 @@ fastjson 1.2.54 + + com.alibaba.nacos + nacos-client + ${nacos.version} + @@ -119,6 +125,18 @@ fastjson + + com.alibaba.nacos + nacos-client + ${nacos.version} + + + guava + com.google.guava + + + + diff --git a/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java b/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java new file mode 100644 index 0000000..a9517e1 --- /dev/null +++ b/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java @@ -0,0 +1,89 @@ +package org.apache.dubbo.proxy.metadata.impl; + + +import org.apache.dubbo.proxy.metadata.MetadataCollector; +import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.LoggerFactory; +import org.apache.dubbo.metadata.identifier.MetadataIdentifier; + +import com.alibaba.nacos.api.NacosFactory; +import com.alibaba.nacos.api.config.ConfigService; +import com.alibaba.nacos.api.exception.NacosException; +import org.apache.dubbo.proxy.utils.Constants; + +import java.util.Properties; + +import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR; + +public class NacosMetadataCollector implements MetadataCollector { + private static final Logger logger = LoggerFactory.getLogger(NacosMetadataCollector.class); + private ConfigService configService; + private String group; + private URL url; + @Override + public void setUrl(URL url) { + this.url = url; + } + + @Override + public URL getUrl() { + return url; + } + + @Override + public void init() { + group = url.getParameter(Constants.GROUP_KEY, "DEFAULT_GROUP"); + + configService = buildConfigService(url); + } + + private ConfigService buildConfigService(URL url) { + Properties nacosProperties = buildNacosProperties(url); + try { + configService = NacosFactory.createConfigService(nacosProperties); + } catch (NacosException e) { + if (logger.isErrorEnabled()) { + logger.error(e.getErrMsg(), e); + } + throw new IllegalStateException(e); + } + return configService; + } + + private Properties buildNacosProperties(URL url) { + Properties properties = new Properties(); + setServerAddr(url, properties); + return properties; + } + + private void setServerAddr(URL url, Properties properties) { + + String serverAddr = url.getHost() + // Host + ":" + + url.getPort() // Port + ; + properties.put(SERVER_ADDR, serverAddr); + } + + @Override + public String getProviderMetaData(MetadataIdentifier key) { + return getMetaData(key); + } + +// @Override + public String getConsumerMetaData(MetadataIdentifier key) { + return getMetaData(key); + } + + private String getMetaData(MetadataIdentifier identifier) { + try { + return configService.getConfig(identifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY), + group, 1000 * 10); + } catch (NacosException e) { + logger.warn("Failed to get " + identifier + " from nacos, cause: " + e.getMessage(), e); + } + return null; + } +} + diff --git a/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.proxy.metadata.MetadataCollector b/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.proxy.metadata.MetadataCollector index 9ddd9e9..74dcab0 100644 --- a/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.proxy.metadata.MetadataCollector +++ b/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.proxy.metadata.MetadataCollector @@ -1 +1,2 @@ zookeeper=org.apache.dubbo.proxy.metadata.impl.ZookeeperMetadataCollector +nacos=org.apache.dubbo.proxy.metadata.impl.NacosMetadataCollector diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5514325..e3c509c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ netty.port: 8000 business.thread.count: 100 -proxy.registry.address: zookeeper://127.0.0.1:2181 +proxy.registry.address: nacos://127.0.0.1:8848 proxy.registry.group: dubbo -proxy.metadata-report.address: zookeeper://127.0.0.1:2181 +proxy.metadata-report.address: nacos://127.0.0.1:8848 From 49bdac04cc243231d5fbc573aa4c5e850e52a546 Mon Sep 17 00:00:00 2001 From: Arzy Date: Wed, 14 Aug 2019 18:52:33 +0800 Subject: [PATCH 2/3] m --- src/main/java/org/apache/dubbo/proxy/Config.java | 2 ++ src/main/java/org/apache/dubbo/proxy/worker/RequestWorker.java | 2 +- src/main/resources/application.yml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/dubbo/proxy/Config.java b/src/main/java/org/apache/dubbo/proxy/Config.java index 46bd136..3b9d2dd 100644 --- a/src/main/java/org/apache/dubbo/proxy/Config.java +++ b/src/main/java/org/apache/dubbo/proxy/Config.java @@ -64,6 +64,8 @@ MetadataCollector getMetadataCollector() { URL metadataUrl = URL.valueOf(metadataAddress); metaDataCollector = ExtensionLoader.getExtensionLoader(MetadataCollector.class). getExtension(metadataUrl.getProtocol()); + metaDataCollector.setUrl(metadataUrl); + metaDataCollector.init(); } return metaDataCollector; } diff --git a/src/main/java/org/apache/dubbo/proxy/worker/RequestWorker.java b/src/main/java/org/apache/dubbo/proxy/worker/RequestWorker.java index cc89b83..eb4b93d 100644 --- a/src/main/java/org/apache/dubbo/proxy/worker/RequestWorker.java +++ b/src/main/java/org/apache/dubbo/proxy/worker/RequestWorker.java @@ -117,7 +117,7 @@ private boolean writeResponse(ChannelHandlerContext ctx, Object result) { } private String[] getTypesFromMetadata(String application, String interfaze, String group, String version, String methodName, int paramLen) { - MetadataIdentifier identifier = new MetadataIdentifier(interfaze, version, group, Constants.PROVIDER_SIDE, application); + MetadataIdentifier identifier = new MetadataIdentifier(interfaze, version, null, Constants.PROVIDER_SIDE, application); String metadata = metadataCollector.getProviderMetaData(identifier); FullServiceDefinition serviceDefinition = JSON.parseObject(metadata, FullServiceDefinition.class); List methods = serviceDefinition.getMethods(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e3c509c..9aa06b4 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,7 @@ netty.port: 8000 business.thread.count: 100 proxy.registry.address: nacos://127.0.0.1:8848 proxy.registry.group: dubbo -proxy.metadata-report.address: nacos://127.0.0.1:8848 +proxy.metadata-report.address: nacos://127.0.0.1:8848?group=dubbo From 794b4a9e4b2a40c983a83e896ad7a5563996b4e0 Mon Sep 17 00:00:00 2001 From: Arzy Date: Tue, 20 Aug 2019 10:20:42 +0800 Subject: [PATCH 3/3] modify DEFAULT_ROOT --- pom.xml | 2 +- .../dubbo/proxy/metadata/impl/NacosMetadataCollector.java | 3 ++- .../java/org/apache/dubbo/proxy/service/GenericInvoke.java | 4 +++- src/main/resources/application.yml | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 9d72406..ad4bfd3 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ 1.8 - 4.1.35.Final + 4.1.39.Final 1.7.26 1.2.17 2.12.0 diff --git a/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java b/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java index a9517e1..0c47ebc 100644 --- a/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java +++ b/src/main/java/org/apache/dubbo/proxy/metadata/impl/NacosMetadataCollector.java @@ -21,6 +21,7 @@ public class NacosMetadataCollector implements MetadataCollector { private ConfigService configService; private String group; private URL url; + private final static String DEFAULT_ROOT = "dubbo"; @Override public void setUrl(URL url) { this.url = url; @@ -33,7 +34,7 @@ public URL getUrl() { @Override public void init() { - group = url.getParameter(Constants.GROUP_KEY, "DEFAULT_GROUP"); + group = url.getParameter(Constants.GROUP_KEY, DEFAULT_ROOT); configService = buildConfigService(url); } diff --git a/src/main/java/org/apache/dubbo/proxy/service/GenericInvoke.java b/src/main/java/org/apache/dubbo/proxy/service/GenericInvoke.java index eccdcd8..dd5b5d1 100644 --- a/src/main/java/org/apache/dubbo/proxy/service/GenericInvoke.java +++ b/src/main/java/org/apache/dubbo/proxy/service/GenericInvoke.java @@ -50,7 +50,9 @@ public static Object genericCall(String interfaceName, String group, logger.info("dubbo generic invoke, service is {}, method is {} , paramTypes is {} , paramObjs is {} , svc" + " is {}.", interfaceName , methodName,paramTypes,paramObjs,svc); - return svc.$invoke(methodName, paramTypes, paramObjs); + Object obj = svc.$invoke(methodName, paramTypes, paramObjs); + logger.debug("invoke ret: {}",obj); + return obj; } catch (Exception e) { logger.error("Generic invoke failed",e); if (e instanceof RpcException) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9aa06b4..e3c509c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,7 @@ netty.port: 8000 business.thread.count: 100 proxy.registry.address: nacos://127.0.0.1:8848 proxy.registry.group: dubbo -proxy.metadata-report.address: nacos://127.0.0.1:8848?group=dubbo +proxy.metadata-report.address: nacos://127.0.0.1:8848