From 25dbe41aee7bc8f045f11974e14b7d7f62e7f926 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Thu, 10 Nov 2016 07:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86RegistryManager=E6=94=B9=E5=90=8D?= =?UTF-8?q?=E4=B8=BARegistryCenter=EF=BC=8C=E5=88=A0=E9=99=A4RegistryCente?= =?UTF-8?q?r=E4=B8=AD=E6=B2=A1=E6=9C=89=E4=BD=BF=E7=94=A8=E7=9A=84API?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=AE=8C=E6=88=90RegistryCenter?= =?UTF-8?q?=E7=9A=84=E5=88=87=E6=8D=A2center=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../a/eye/skywalking/registry/api/Center.java | 9 +++++ .../skywalking/registry/api/CenterType.java | 19 +++++++++ .../registry/api/NotifyListener.java | 2 +- .../registry/api/RegistryCenter.java | 26 ++++++++++++ .../registry/api/RegistryCenterFactory.java | 33 +++++++++++++++ .../skywalking/registry/api/RegistryData.java | 12 ------ .../registry/api/RegistryManager.java | 40 ------------------- 7 files changed, 88 insertions(+), 53 deletions(-) create mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/Center.java create mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/CenterType.java create mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenter.java create mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenterFactory.java delete mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryData.java delete mode 100644 skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryManager.java diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/Center.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/Center.java new file mode 100644 index 000000000..d943c18d1 --- /dev/null +++ b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/Center.java @@ -0,0 +1,9 @@ +package com.a.eye.skywalking.registry.api; + +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +public @interface Center { + CenterType type() default CenterType.zookeeper; +} diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/CenterType.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/CenterType.java new file mode 100644 index 000000000..c91995fea --- /dev/null +++ b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/CenterType.java @@ -0,0 +1,19 @@ +package com.a.eye.skywalking.registry.api; + +/** + * Created by xin on 2016/11/10. + */ +public enum CenterType { + zookeeper("zookeeper"); + + private String type; + + CenterType(String typeStr) { + this.type = typeStr; + } + + + public String getType() { + return type; + } +} diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/NotifyListener.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/NotifyListener.java index da71eb959..34221529c 100644 --- a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/NotifyListener.java +++ b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/NotifyListener.java @@ -3,5 +3,5 @@ package com.a.eye.skywalking.registry.api; import java.util.List; public interface NotifyListener { - void notify(List urls); + void notify(List urls); } diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenter.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenter.java new file mode 100644 index 000000000..76195e998 --- /dev/null +++ b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenter.java @@ -0,0 +1,26 @@ +package com.a.eye.skywalking.registry.api; + +/** + * 主要用于注册中心的维护 + */ +public interface RegistryCenter { + + /** + * 主要用于storage启动注册使用,将自身IP和端口注册到注册中心 + * 格式为: + * /storage_list/192.168.0.1:3400 NULL + * + * @param path + */ + void register(String path); + + /** + * 主要用于routing节点在启动完成之后,读取和监听stroage节点列表 + * 格式 + * + * @param path + * @param listener + */ + void subscribe(String path, NotifyListener listener); + +} diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenterFactory.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenterFactory.java new file mode 100644 index 000000000..3dc909f16 --- /dev/null +++ b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryCenterFactory.java @@ -0,0 +1,33 @@ +package com.a.eye.skywalking.registry.api; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.ServiceLoader; + +/** + * Created by xin on 2016/11/10. + */ +public class RegistryCenterFactory { + + private Map registryCenter = new HashMap(); + + private RegistryCenterFactory() { + ServiceLoader loaders = ServiceLoader.load(RegistryCenter.class); + Iterator iterator = loaders.iterator(); + while (iterator.hasNext()) { + RegistryCenter center = iterator.next(); + Center centerInfo = center.getClass().getAnnotation(Center.class); + if (centerInfo == null) { + continue; + } + + registryCenter.put(centerInfo.type(), center); + + } + } + + public RegistryCenter getRegistryCenter(CenterType type) { + return registryCenter.get(type); + } +} diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryData.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryData.java deleted file mode 100644 index 597728440..000000000 --- a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryData.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.a.eye.skywalking.registry.api; - -/** - * 存储注册项的数据 - * 注册项包括:注册的目录(支持多级,以"/"分割)以及注册值 - */ -public interface RegistryData { - - String getPath(); - - String getValue(); -} diff --git a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryManager.java b/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryManager.java deleted file mode 100644 index 445d645f2..000000000 --- a/skywalking-registry/src/main/java/com/a/eye/skywalking/registry/api/RegistryManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.a.eye.skywalking.registry.api; - -/** - * 主要用于注册中心的维护 - */ -public interface RegistryManager { - - /** - * 主要用于storage启动注册使用,将自身IP和端口注册到注册中心 - * 格式为: - * /storage_list/192.168.0.1:3400 NULL - * - * @param data - */ - void register(RegistryData data); - - /** - * 从注册中心移除storage宕机节点 - * - * @param data - */ - void unregister(RegistryData data); - - /** - * 主要用于routing节点在启动完成之后,读取和监听stroage节点列表 - * 格式 - * - * @param data - * @param listener - */ - void subscribe(RegistryData data, NotifyListener listener); - - /** - * 移除storage节点监听 - * - * @param data - */ - void unsubscribe(RegistryData data); - -}