dubbo 多注册中心

这个我调试了下,多个注册中心在创建代理的时候,每个注册中心对应一个invoker,持有一个RegistryDirectory对应一个zkClinet,并且维护这样一个map:

那些不正确zk在创建代理的时候会因为订阅provider节点失败,最后对应的RegistryDirectory下这个map会没有这些方法的key和value。
多个注册中心的多个invoker最后会cluster.join(StaticDirectory)成一个invoker,这些invoker作为StaticDirectory的成员在AvailableCluster中第一次list直接返回整个list,在依次invoker.invoke之前检查invoker.isAvailable(),方法最后会检查上面这个map是否为空 为空则认为不可用不执行invoke(),全部不可用则RPCException:No provider available
可用的invoker会进一步在Failover流程中list和route。
 

posted @ 2020-08-05 01:38  l2c  阅读(209)  评论(0)    收藏  举报