Dubbo源码分析(三)-----消费者引用服务启动时序

时间:2021-07-11 19:37:23

             之前分析Dubbo架构分析的一篇,从dubbo官网摘录下了,服务消费者的时序分析图。Dubbo源码分析(三)-----消费者引用服务启动时序

     这篇文章还是从代码层面来分析消费者启动顺序。

 首先,获取引用的变量,如果没有初始化,则调用init方法。

Dubbo源码分析(三)-----消费者引用服务启动时序

    下面在看下 init方法的里面是初始化的过程。

Dubbo源码分析(三)-----消费者引用服务启动时序

            通过调用Class.forName的加载类到jvm。

Dubbo源码分析(三)-----消费者引用服务启动时序

             将一个类中的版本和方法, 存储在一个HashMap中。

Dubbo源码分析(三)-----消费者引用服务启动时序

    最后,最重要的一点是createProxy这个方法,是创建动态代理, 然后创建ConsumerModel,其实是ref的装饰器,然后用ApplicationMode初始化消费者。

Dubbo源码分析(三)-----消费者引用服务启动时序

           然后调用RegisterProtocal的Refer方法,如果是RegisterService则直接包装成Invoker返回, 然后是多个的,则调用doRefuer方法,使用Cluster去处理。

Dubbo源码分析(三)-----消费者引用服务启动时序

        然后调用RegisterDirectory的subcribe,去订阅zookeeper的目录,然后使用cluster的join方法封装成Invoker,注册到ProvierConsumerRegTable中。

接着调用 Transporter的connect函数, 最终会调用ProxyFactory的createProxy创建动态代理类。

      总结:

    最近在看dubbo启动过程还是有点懵,对于它的整体架构和流程还是比较肤浅的,欢迎大家一起交流。