dubbo集群容错之directory目录
directory接口的实现类有两个:StaticDirectory,RegistryDirectory。其中StaticDirectory
中的Static
关键词来看,就知道,这个其实是不会动态变化的,从下图知道,他的Invoker
是通过构造函数传入,StaticDirectory
用得比较少,主要用在服务对多注册中心的引用
官网:Directory
代表多个 Invoker
,可以把它看成 List<Invoker>
,但与 List
不同的是,它的值可能是动态变化的,比如注册中心推送变更。
鉴于官网居多介绍动态目录,咱们着重RegistryDirectory,先来看看继承关系图
其中NotifyListener
中的notify
方法就是注册中心的回调,也就是为什么能根据注册中心动态变化的根源所在
怎么获取的invokers吗?是从methodInvokerMap
中获取的,但是仅仅是读操作,那么写操作是在什么时候进行的呢!就是在回调notify方法的时候!!!
意思就是当注册中心发生改变时,就会更新methodInvokerMap和urlInvokerMap的值。这就回应了官网的“它的值可能是动态变化的,比如注册中心推送变更”这句话。