You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by mi...@apache.org on 2018/11/22 03:32:44 UTC
[incubator-dubbo-ops] branch metadata updated: generate client bean
This is an automated email from the ASF dual-hosted git repository.
min pushed a commit to branch metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git
The following commit(s) were added to refs/heads/metadata by this push:
new 61d3efb generate client bean
61d3efb is described below
commit 61d3efb02a419353de0f157543f2c700649ad55f
Author: nzomkxia <z8...@gmail.com>
AuthorDate: Thu Nov 22 11:32:47 2018 +0800
generate client bean
---
.../apache/dubbo/admin/common/util/Constants.java | 9 +++
.../apache/dubbo/admin/config/ConfigCenter.java | 71 ++++++++++++++++------
.../admin/data/metadata/MetaDataCollector.java | 12 +++-
.../data/metadata/impl/RedisMetaDataCollector.java | 25 +++++++-
.../metadata/impl/ZookeeperMetaDataCollector.java | 32 +++++++++-
.../dubbo/admin/service/impl/AbstractService.java | 4 ++
.../src/main/resources/application.properties | 1 -
7 files changed, 131 insertions(+), 23 deletions(-)
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
new file mode 100644
index 0000000..9e4c5d0
--- /dev/null
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
@@ -0,0 +1,9 @@
+package org.apache.dubbo.admin.common.util;
+
+
+public class Constants {
+
+ public static final String REGISTRY_ADDRESS = "dubbo.registry.address";
+ public static final String METADATA_ADDRESS = "dubbo.metadatareport.address";
+
+}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index b520627..1af2e09 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -1,7 +1,8 @@
package org.apache.dubbo.admin.config;
+import org.apache.dubbo.admin.common.util.Constants;
import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
-import org.apache.dubbo.common.Constants;
+import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.registry.Registry;
@@ -9,50 +10,84 @@ import org.apache.dubbo.registry.RegistryFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+
+import java.util.Arrays;
+
@Configuration
public class ConfigCenter {
- @Value("${dubbo.configcenter}")
+ @Value("${dubbo.configcenter:}")
private String configCenter;
- @Value("${dubbo.registry.address}")
+ @Value("${dubbo.registry.address:}")
private String registryAddress;
- @Value("${dubbo.registry.group}")
+ private static String globalConfigPath = "/config/dubbo/dubbo.properties";
+
+ @Value("${dubbo.registry.group:}")
private String group;
private URL configCenterUrl;
private URL registryUrl;
+ private URL metadataUrl;
- @Bean
- Registry getRegistryService() {
- if (registryAddress != null) {
- registryUrl = formUrl(registryAddress);
- if (group != null) {
- registryUrl.addParameter(Constants.GROUP_KEY, group);
- }
- RegistryFactory factory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
- return factory.getRegistry(registryUrl);
- }
- return null;
- }
-
- @Bean
+ /*
+ * generate dynamic configuration client
+ */
+ @Bean("governanceConfiguration")
GovernanceConfiguration getDynamicConfiguration() {
if (configCenter != null) {
configCenterUrl = formUrl(configCenter);
GovernanceConfiguration dynamicConfiguration = ExtensionLoader.getExtensionLoader(GovernanceConfiguration.class).getExtension(configCenterUrl.getProtocol());
dynamicConfiguration.setUrl(configCenterUrl);
dynamicConfiguration.init();
+ globalConfigPath = group == null ? "/dubbo" + globalConfigPath : "/" + group + globalConfigPath;
+ String config = dynamicConfiguration.getConfig(globalConfigPath);
+
+ Arrays.stream(config.split("\n")).forEach( s -> {
+ if(s.startsWith(Constants.REGISTRY_ADDRESS)) {
+ registryUrl = formUrl(s.split("=")[1].trim());
+ } else if (s.startsWith(Constants.METADATA_ADDRESS)) {
+ metadataUrl = formUrl(s.split("=")[1].trim());
+ }
+ });
return dynamicConfiguration;
}
return null;
}
+ /*
+ * generate registry client
+ */
+ @Bean
+ @DependsOn("governanceConfiguration")
+ Registry getRegistry() {
+ Registry registry = null;
+ if (registryUrl != null) {
+ RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
+ registry = registryFactory.getRegistry(registryUrl);
+ }
+ return registry;
+ }
+
+ /*
+ * generate metadata client
+ */
+ @Bean
+ @DependsOn("governanceConfiguration")
+ MetaDataCollector getMetadataCollector() {
+ MetaDataCollector metaDataCollector = null;
+ if (metadataUrl != null) {
+ metaDataCollector = ExtensionLoader.getExtensionLoader(MetaDataCollector.class).getExtension(metadataUrl.getProtocol());
+ }
+ return metaDataCollector;
+ }
+
private URL formUrl(String config) {
String protocol = config.split("://")[0];
String address = config.split("://")[1];
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
index deedce5..77b7041 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
@@ -1,5 +1,15 @@
package org.apache.dubbo.admin.data.metadata;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.extension.SPI;
+
+@SPI("zookeeper")
public interface MetaDataCollector {
- public String getMetaData(String path);
+
+ void setUrl(URL url);
+
+ URL getUrl();
+
+ void init();
+ String getMetaData(String path);
}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
index 23bd52f..82d0e71 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
@@ -2,10 +2,33 @@ package org.apache.dubbo.admin.data.metadata.impl;
import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.common.URL;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
public class RedisMetaDataCollector implements MetaDataCollector {
+
+ private URL url;
+ private JedisPool pool;
+ @Override
+ public void setUrl(URL url) {
+ this.url = url;
+ }
+
+ @Override
+ public URL getUrl() {
+ return url;
+ }
+
+ @Override
+ public void init() {
+ pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort());
+ }
+
@Override
public String getMetaData(String path) {
- return null;
+ Jedis jedis = pool.getResource();
+ return jedis.get(path);
}
}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
index 2423fce..d6033f8 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
@@ -1,15 +1,43 @@
package org.apache.dubbo.admin.data.metadata.impl;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
+import org.apache.dubbo.common.URL;
import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
public class ZookeeperMetaDataCollector implements MetaDataCollector {
- ZookeeperClient client;
+ CuratorFramework client;
+ URL url;
+
+ @Override
+ public void setUrl(URL url) {
+ this.url = url;
+ }
+
+ @Override
+ public URL getUrl() {
+ return url;
+ }
+
+ @Override
+ public void init() {
+ client = CuratorFrameworkFactory.newClient(url.getAddress(), new ExponentialBackoffRetry(1000, 3));
+ client.start();
+ }
@Override
public String getMetaData(String path) {
- client.getContent(path);
+ try {
+ if (client.checkExists().forPath(path) == null) {
+ return null;
+ }
+ return new String(client.getData().forPath(path));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
return null;
}
}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
index f7137d3..30b81ce 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/AbstractService.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.admin.service.impl;
import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
+import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -44,6 +45,9 @@ public class AbstractService {
protected GovernanceConfiguration dynamicConfiguration;
@Autowired
+ protected MetaDataCollector metaDataCollector;
+
+ @Autowired
private RegistryServerSync sync;
public ConcurrentMap<String, ConcurrentMap<String, Map<String, URL>>> getRegistryCache() {
diff --git a/dubbo-admin-backend/src/main/resources/application.properties b/dubbo-admin-backend/src/main/resources/application.properties
index 87d44b8..294b80e 100644
--- a/dubbo-admin-backend/src/main/resources/application.properties
+++ b/dubbo-admin-backend/src/main/resources/application.properties
@@ -15,7 +15,6 @@
# limitations under the License.
#
-dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.group=dubbo
dubbo.configcenter=zookeeper://127.0.0.1:2181
dubbo.apollo.token=xxxxx
\ No newline at end of file