dubbo源码-ServiceConfig/ReferenceConfig 流程
ServiceConfig主要负责服务的导出:
先通过设置的registry初始化注册中心url列表 registryURLs。
然后对设置的每个protocol每个注册中心进行服务的导出。
在执行服务导出时再初始化provider的url。
最后给provider的url设置到registry url的export属性上,最终通过registry协议对应的registryProtocol类执行服务导出,在该类中会解析export属性取出要导出的类。
ReferenceConfig负责服务的引用,流程和导出基本一致:
先初始化consumer基本属性。
通过设置的registry初始化注册中心url列表 registryURLs。
如果只有单个注册中心,则直接用protocol SPI通过该注册中心获取invoker,如果是多注册中心,则使用protocol SPI通过注册中心列表获取invoker list,使用该invoker list构建staticdirectory,最后使用Cluster SPI聚合staticdirectory获取单个invoker作为最后的invoker。(注:由于这里生成invoker使用的url都是registry协议的,所以最后使用的protocol都是registryprotocol,如何获取提供者地址也是在registryprotocol实现的)
最后使用proxy SPI通过上面得到的invoker获取最终使用的ref。