跳到主要内容

简述Dubbo的服务引用的流程 ?

参考答案:

Dubbo的服务引用流程主要包括以下步骤:

  1. 加载:在启动时,Dubbo通过initialize()方法完成初始化,装配各种Config对象,为后续的服务暴露和引用准备好环境。
  2. 引用服务:在DubboBootstrap初始化结束后,会调用DubboBootstrap#referServices()方法引用依赖的服务。这个过程主要是从ConfigManager提取出所有的ReferenceConfig对象,然后调用每个的get()方法创建代理对象。
  3. 构建远程调用代理:在服务引入时,Dubbo会根据引入的服务类型(是否是本地引入还是远程引入)来构建对应的远程调用代理。如果是本地引入,会构建一个本地引入的URL然后进行服务的引入;如果是远程引入,则需要判断点对点直连provider还是通过注册中心拿到provider信息再进行连接。

其中,get()方法会判断ref是否已经生成,如果已经生成就直接返回,否则会调用init()方法进行初始化,初始化的过程中会创建代理对象。如果没有指定相关配置,会使用ConsumerConfig的默认配置,以及相关的Check和自身属性的刷新。

以上流程完成后,Dubbo就完成了对依赖服务的引用,可以通过代理对象调用远程服务。