dubbo 服务引用序列图如下【新的窗口查看清晰版】
本文由javacoder.cn整理,谢绝转载, 谢谢
1)DubboBeanDefinitionParser.parse 完成dubbo 命名空间中xml元素的解析,当然最重要的就是<dubbo:reference/>元素
2)ReferenceBean.getObject() 由于ReferenceBean实现了FactoryBean接口,在spring 上下文加载的refresh阶段会调用getObject 方法
3)ReferenceBean.loadRegistries 根据<dubbo:registry/>配置,系统属性"dubbo.registry.address"等信息创建代表注册中心的URL
4)RegistryProtocol.refer 先根据参数registry"将URL协议由"registry://"换成具体的"zookeeper://"协议。 然后调用RegistryFactory.getRegistry获取表示ZookeeperRegistry的具体实现, 向注册中心注册表示自己的消费者URL, 然后构造RegistryDirectory对象,最后向服务器订阅"consumer:"URL的"providers,configurators,routers"这3类变动,
RegistryDirectory.notify 接收到"dubbo://" 的通知后调用DubboProtocol.refer() 将URL转换为Invoker,然后ProtocolFilterWrapper将filter添加到Invoker链中。
12)FailoverCluster.join 通过Cluster将故障转移机制添加到Invoker中, 具体的是FailoverClusterInvoker,FailoverClusterInvoker的构造函数需要Directory参数, 由于RegistryDirectory中有DubboInvoker的引用,所以能将整个Invoker链起来了
13)JavassistProxyFactory.getProxy 通过JavassistProxyFactory 代理工厂类产生该接口的代理
Posted in: MySQL practise
Comments are closed.