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); - -}