com.alibaba.dubbo.registry.support
Class AbstractRegistry

java.lang.Object
  extended by com.alibaba.dubbo.registry.support.AbstractRegistry
All Implemented Interfaces:
Node, Registry, RegistryService
Direct Known Subclasses:
FailbackRegistry

public abstract class AbstractRegistry
extends Object
implements Registry

AbstractRegistry. (SPI, Prototype, ThreadSafe)

Author:
chao.liuc, william.liangf

Constructor Summary
AbstractRegistry(URL url)
           
 
Method Summary
 void destroy()
          destroy.
 void doSaveProperties(long version)
           
 File getCacheFile()
           
 Properties getCacheProperties()
           
 List<URL> getCacheUrls(URL url)
           
 AtomicLong getLastCacheChanged()
           
 Map<URL,Map<String,List<URL>>> getNotified()
           
 Set<URL> getRegistered()
           
 Map<URL,Set<NotifyListener>> getSubscribed()
           
 URL getUrl()
          get url.
 List<URL> lookup(URL url)
          查询符合条件的已注册数据,与订阅的推模式相对应,这里为拉模式,只返回一次结果。
 void register(URL url)
          注册数据,比如:提供者地址,消费者地址,路由规则,覆盖规则,等数据。
 void subscribe(URL url, NotifyListener listener)
          订阅符合条件的已注册数据,当有注册数据变更时自动推送.
 String toString()
           
 void unregister(URL url)
          取消注册.
 void unsubscribe(URL url, NotifyListener listener)
          取消订阅.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.alibaba.dubbo.common.Node
isAvailable
 

Constructor Detail

AbstractRegistry

public AbstractRegistry(URL url)
Method Detail

getUrl

public URL getUrl()
Description copied from interface: Node
get url.

Specified by:
getUrl in interface Node
Returns:
url.

getRegistered

public Set<URL> getRegistered()

getSubscribed

public Map<URL,Set<NotifyListener>> getSubscribed()

getNotified

public Map<URL,Map<String,List<URL>>> getNotified()

getCacheFile

public File getCacheFile()

getCacheProperties

public Properties getCacheProperties()

getLastCacheChanged

public AtomicLong getLastCacheChanged()

doSaveProperties

public void doSaveProperties(long version)

getCacheUrls

public List<URL> getCacheUrls(URL url)

lookup

public List<URL> lookup(URL url)
Description copied from interface: RegistryService
查询符合条件的已注册数据,与订阅的推模式相对应,这里为拉模式,只返回一次结果。

Specified by:
lookup in interface RegistryService
Parameters:
url - 查询条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
Returns:
已注册信息列表,可能为空,含义同com.alibaba.dubbo.registry.NotifyListener#notify(List)的参数。
See Also:
NotifyListener.notify(List)

register

public void register(URL url)
Description copied from interface: RegistryService
注册数据,比如:提供者地址,消费者地址,路由规则,覆盖规则,等数据。

注册需处理契约:
1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试,否则抛出异常。
2. 当URL设置了dynamic=false参数,则需持久存储,否则,当注册者出现断电等情况异常退出时,需自动删除。
3. 当URL设置了category=routers时,表示分类存储,缺省类别为providers,可按分类部分通知数据。
4. 当注册中心重启,网络抖动,不能丢失数据,包括断线自动删除数据。
5. 允许URI相同但参数不同的URL并存,不能覆盖。

Specified by:
register in interface RegistryService
Parameters:
url - 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin

unregister

public void unregister(URL url)
Description copied from interface: RegistryService
取消注册.

取消注册需处理契约:
1. 如果是dynamic=false的持久存储数据,找不到注册数据,则抛IllegalStateException,否则忽略。
2. 按全URL匹配取消注册。

Specified by:
unregister in interface RegistryService
Parameters:
url - 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin

subscribe

public void subscribe(URL url,
                      NotifyListener listener)
Description copied from interface: RegistryService
订阅符合条件的已注册数据,当有注册数据变更时自动推送.

订阅需处理契约:
1. 当URL设置了check=false时,订阅失败后不报错,在后台定时重试。
2. 当URL设置了category=routers,只通知指定分类的数据,多个分类用逗号分隔,并允许星号通配,表示订阅所有分类数据。
3. 允许以interface,group,version,classifier作为条件查询,如:interface=com.alibaba.foo.BarService&version=1.0.0
4. 并且查询条件允许星号通配,订阅所有接口的所有分组的所有版本,或:interface=*&group=*&version=*&classifier=*
5. 当注册中心重启,网络抖动,需自动恢复订阅请求。
6. 允许URI相同但参数不同的URL并存,不能覆盖。
7. 必须阻塞订阅过程,等第一次通知完后再返回。

Specified by:
subscribe in interface RegistryService
Parameters:
url - 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
listener - 变更事件监听器,不允许为空

unsubscribe

public void unsubscribe(URL url,
                        NotifyListener listener)
Description copied from interface: RegistryService
取消订阅.

取消订阅需处理契约:
1. 如果没有订阅,直接忽略。
2. 按全URL匹配取消订阅。

Specified by:
unsubscribe in interface RegistryService
Parameters:
url - 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
listener - 变更事件监听器,不允许为空

destroy

public void destroy()
Description copied from interface: Node
destroy.

Specified by:
destroy in interface Node

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2012–2017 Alibaba. All rights reserved.