Dubbo:服务发现过程

服务发现触发

ReferenceBean实现了FactoryBeanInitializingBean,在reference标签中配置init属性就会触发立即初始化(afterPropertiesSet()方法中),如果没有配置则会延迟初始化直到通过getBean()调用getObject()完成。

真正的服务发现逻辑是在,ReferenceBean的父类ReferenceConfig.init()中完成服务发现。

服务发现过程

服务发现过程中比较重要的是在ReferenceConfig.createProxy()方法内,会获取注册中心对应的URL,并添加具体服务发现的参数,通过具体的protocol得到服务invoker,最后利用dubbo扩展机制获取ProxyFactory的实现来创建服务代理。(如果注册中心有多个,会通过集群策略将多个invoker伪装成一个invoker)