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