简述Dubbo的服务引用的流程 ?
参考答案:
Dubbo的服务引用流程主要包括以下步骤:
- 加载:在启动时,Dubbo通过
initialize()
方法完成初始化,装配各种Config对象,为后续的服务暴露和引用准备好环境。 - 引用服务:在DubboBootstrap初始化结束后,会调用
DubboBootstrap#referServices()
方法引用依赖的服务。这个过程主要是从ConfigManager
提取出所有的ReferenceConfig
对象,然后调用每个的get()
方法创建代理对象。 - 构建远程调用代理:在服务引入时,Dubbo会根据引入的服务类型(是否是本地引入还是远程引入)来构建对应的远程调用代理。如果是本地引入,会构建一个本地引入的URL然后进行服务的引入;如果是远程引入,则需要判断点对点直连provider还是通过注册中心拿到provider信息再进行连接。
其中,get()
方法会判断ref是否已经生成,如果已经生成就直接返回,否则会调用init()
方法进行初始化,初始化的过程中会创建代理对象。如果没有指定相关配置,会使用ConsumerConfig
的默认配置,以及相关的Check和自身属性的刷新。
以上流程完成后,Dubbo就完成了对依赖服务的引用,可以通过代理对象调用远程服务。