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/21 07:21:14 UTC

[incubator-dubbo-ops] branch metadata updated: dynamic config impl

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 a24593e  dynamic config impl
a24593e is described below

commit a24593e653d1404f7a1e728f17982d03221f71e8
Author: nzomkxia <z8...@gmail.com>
AuthorDate: Wed Nov 21 15:21:13 2018 +0800

    dynamic config impl
---
 .../admin/data/config/GovernanceConfiguration.java | 15 ++++--
 .../data/config/impl/ApolloConfiguration.java      | 40 ++++++++++++++++
 .../data/config/impl/ZookeeperConfiguration.java   | 56 ++++++++++++++++++++++
 ...dubbo.admin.data.config.GovernanceConfiguration |  2 +
 ...che.dubbo.admin.data.metadata.MetaDataCollector |  2 +
 5 files changed, 110 insertions(+), 5 deletions(-)

diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java
index bbb0188..ef5ad30 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/GovernanceConfiguration.java
@@ -1,13 +1,18 @@
 package org.apache.dubbo.admin.data.config;
 
-import org.apache.dubbo.configcenter.DynamicConfiguration;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.extension.SPI;
 
 
-public interface GovernanceConfiguration extends DynamicConfiguration {
-    String setConfig(String key, String value);
+@SPI("zookeeper")
+public interface GovernanceConfiguration {
+    void init();
+
+    void setUrl(URL url);
 
-    String setConfig(String key, String group, String value);
+    URL getUrl();
+    String setConfig(String key, String value);
 
-    String setConfig(String key, String group, int timeout, String value);
+    String getConfig(String key);
 
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java
new file mode 100644
index 0000000..0e4d1a3
--- /dev/null
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ApolloConfiguration.java
@@ -0,0 +1,40 @@
+package org.apache.dubbo.admin.data.config.impl;
+
+import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;
+import org.apache.dubbo.admin.data.config.GovernanceConfiguration;
+import org.apache.dubbo.common.URL;
+import org.springframework.beans.factory.annotation.Value;
+
+public class ApolloConfiguration implements GovernanceConfiguration {
+
+    @Value("${dubbo.apollo.token}")
+    private String token;
+    private URL url;
+    private ApolloOpenApiClient client;
+
+
+    @Override
+    public void setUrl(URL url) {
+       this.url = url;
+    }
+
+    @Override
+    public URL getUrl() {
+        return url;
+    }
+
+    @Override
+    public void init() {
+        client = ApolloOpenApiClient.newBuilder().withPortalUrl(url.getAddress()).withToken(token).build();
+    }
+
+    @Override
+    public String setConfig(String key, String value) {
+        return null;
+    }
+
+    @Override
+    public String getConfig(String key) {
+        return null;
+    }
+}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java
new file mode 100644
index 0000000..5fca72b
--- /dev/null
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/config/impl/ZookeeperConfiguration.java
@@ -0,0 +1,56 @@
+package org.apache.dubbo.admin.data.config.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.config.GovernanceConfiguration;
+import org.apache.dubbo.common.URL;
+
+public class ZookeeperConfiguration implements GovernanceConfiguration {
+    private CuratorFramework zkClient;
+    private URL url;
+
+    @Override
+    public void setUrl(URL url) {
+       this.url = url;
+    }
+
+    @Override
+    public URL getUrl() {
+        return url;
+    }
+
+    @Override
+    public void init() {
+        zkClient = CuratorFrameworkFactory.newClient(url.getAddress(), new ExponentialBackoffRetry(1000, 3));
+        zkClient.start();
+    }
+
+    @Override
+    public String setConfig(String key, String value) {
+        try {
+            if (zkClient.checkExists().forPath(key) == null) {
+                zkClient.create().creatingParentsIfNeeded().forPath(key);
+            }
+            zkClient.setData().forPath(key, value.getBytes());
+            return value;
+        } catch (Exception e) {
+
+        }
+        return null;
+    }
+
+    @Override
+    public String getConfig(String key) {
+
+        try {
+            if (zkClient.checkExists().forPath(key) == null) {
+                return null;
+            }
+            return new String(zkClient.getData().forPath(key));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
diff --git a/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.config.GovernanceConfiguration b/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.config.GovernanceConfiguration
new file mode 100644
index 0000000..12783c4
--- /dev/null
+++ b/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.config.GovernanceConfiguration
@@ -0,0 +1,2 @@
+zookeeper=org.apache.dubbo.admin.data.config.impl.ZookeeperConfiguration
+apollo=org.apache.dubbo.admin.data.config.impl.ZookeeperConfiguration
diff --git a/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.metadata.MetaDataCollector b/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.metadata.MetaDataCollector
new file mode 100644
index 0000000..0009f5d
--- /dev/null
+++ b/dubbo-admin-backend/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.admin.data.metadata.MetaDataCollector
@@ -0,0 +1,2 @@
+zookeeper=org.apache.dubbo.admin.data.metadata.impl.ZookeeperMetaDataCollector
+redis=org.apache.dubbo.admin.data.metadata.impl.RedisMetaDataCollector
\ No newline at end of file