Dubbo Consumer引用服务的方法是什么(consumer,dubbo,开发技术)

时间:2024-05-09 08:24:59 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Dubbo%C2%A0Consumer%E5%BC%95%E7%94%A8%E6%9C%8D%E5%8A%A1%E7%9A%84%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88

在之前的章节中已经知道,Dubbo基于Spring自定义标签规范实现了自定义标签,通过自定义标签完成了bean的加载,并且通过实现监听Spring容器刷新完毕事件启动dubbo客户端。启动客户端伴随着服务发布和服务的订阅。

dubbo通过<dubbo:reference标签引用服务,之后在程序中通过Spring的Context依赖查找(getBean)的方式获取引用的服务的代理实例。<dubbo:reference加载的Bean是ReferenceBean,它实现了FactoryBean接口,getBean时会调用ReferenceBean的getObject()方法,这是获取引用的入口。getBean方法会判断Reference对象是否是空的,如果是空的,调用init方法。代码如下:

ReferenceBean继承了ReferenceConfig,当调用ReferenceBean的getObject()方法会调用ReferenceBean的get()方法。

创建代理服务会创建Invoker,在引用服务过程中,会判断协议是否为injvm,会根据协议做不同的处理,不是injvm协议会根据构造的配置信息(map)生成url并将url协议有zookeeper://改成registry://,然后通过Protocol接口refer方法引用服务,与发布服务相似,引用服务的过程也会包装方法的调用链,如下:

- ProtocolListenerWrapper
- - ProtocolFilterWrapper
- - - RegistryProtocol

在refer的过程中会对一个服务端的引用和一个服务多个服务端的服务进行区分处理,对于有多个服务端的服务会进行集群处理(cluster),会讲invoker列表加入到集群中,在调用过程中会根据集群策略来选择不同的策略进行调用,集群策略实现也实现了SPI机制,

RegistryProtocol#doRefer方法,directory.subscribe会按照下面的调用链进行处理,最后调用ZookeeperRegistry#doSubscribe方法向zk注册数据订阅接口,并设置监听。

- RegistryDirectory
- - ListenerRegistryWrapper
- - - FailbackRegistry
- - - - ZookeeperRegistry

refer服务创建Invoker时会调用该方法,该方法会通过getClients创建网络客户端,创建客户端是会判断客户端是否为共享链接,根据connections创建客户端ExchangeClient,然后通过initClient初始化客户端,初始化过程中会判断是否为延迟的客户端LazyConnectExchangeClient,不是延迟客户端,就会通过connect连接服务提供者,与服务提供者连接,具体建立连接流程不在这里说明,会在网络通信介绍。

本文:Dubbo Consumer引用服务的方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:ActivityManagerService广播并行发送与串行发送怎么实现下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18