com.alibaba.dubbo.registry.multicast
Class MulticastRegistry

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

public class MulticastRegistry
extends FailbackRegistry

MulticastRegistry

Author:
william.liangf

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

Constructor Detail

MulticastRegistry

public MulticastRegistry(URL url)
Method Detail

isAvailable

public boolean isAvailable()
Description copied from interface: Node
is available.

Returns:
available.

destroy

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

Specified by:
destroy in interface Node
Overrides:
destroy in class FailbackRegistry

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
Overrides:
register in class FailbackRegistry
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
Overrides:
unregister in class FailbackRegistry
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
Overrides:
subscribe in class FailbackRegistry
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
Overrides:
unsubscribe in class FailbackRegistry
Parameters:
url - 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
listener - 变更事件监听器,不允许为空

lookup

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

Specified by:
lookup in interface RegistryService
Overrides:
lookup in class AbstractRegistry
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)

getMutilcastSocket

public MulticastSocket getMutilcastSocket()

getReceived

public Map<URL,Set<URL>> getReceived()


Copyright © 2012–2017 Alibaba. All rights reserved.