Dubbo 源码分析 01 配置相关

   dubbo-config-api ,实现了 API 配置 和 属性配置 功能。

   dubbo-config-spring ,实现了 XML 配置 和 注解配置 功能。

依赖图如下:

dubbo 配置  知识点总结

1.  配置概述

  • 服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方。
  • 服务治理:表示该配置项用于治理服务间的关系,或为开发测试提供便利条件。
  • 性能调优:表示该配置项用于调优性能,不同的选项对性能会产生影响。

所有配置最终都将转换为 Dubbo URL 表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数,参见配置项一览表中的 “对应URL参数” 列。

2.  读取配置

   appendProperties读取环境变量和properties 到配置对象 

   appendAnnotation : 读取注解配置到配置对象

3. 关于服务暴露

  1. 进一步初始化 ServiceConfig 对象。
  2. 校验 ServiceConfig 对象的配置项。
  3. 使用 ServiceConfig 对象,生成 Dubbo URL 对象数组。
  4. 使用 Dubbo URL 对象,暴露服务。
  5. 拼接属性配置到ProviderConfig对象
  6. 服务暴露过程中会校验各种配置

4.    服务消费      

  1. 进一步初始化 ReferenceConfig 对象。
  2. 校验 ReferenceConfig 对象的配置项。
  3. 使用 ReferenceConfig 对象,生成 Dubbo URL 对象数组
  4. 使用 Dubbo URL 对象,应用服务

各种配置解析后,会增加到参数集合map,用于创建Dubbo URL的parameters属性

5.属性配置

FROM 《Dubbo 用户指南 —— 属性配置》

如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。

Dubbo 将自动加载 classpath 根目录下的 dubbo.properties,可以通过JVM启动参数 -Ddubbo.properties.file=xxx.properties 改变缺省配置位置

6.XML 配置

   XML 配置,自定义 <dubbo: /> 标签,基于 Spring XML 进行解析

  6.1 init方法中,定义了每个<xsd:element/>对应的 xml.BeanDefinitionParser, 对xml文件进行解析

        parse方法,解析XML元素

 6.2 解析xml后,创建rootBeanDefinition,解析成BeanDefinition对象后,再创建Bean对象

 6.3 循环Bean 对象的setting方法,把属性赋值到Bean对象

6.4 解析各种dubbo标签

7.注解配置

    7.1 通过使用 Java Config + 注解的方式,相比 XML 来说,会更加熟悉一些

    7.2 @EnableDubbo 注解,是 @EnableDubboConfig 和 @DubboComponentScan 的组合注解,使用时更加便利

         扫描Dubbo的服务提供者( @Service注解),以及Dubbo的服务消费者(@Reference注解)

    7.3 注册相应的Dubbo config到Spring 容器中

    7.4 reference的bean,缓存到cache中

    7.5 远程的Dubbo服务,已经存在,可以进行加载引用;本地的Dubbo服务,此时未暴露,先添加到cache中进行缓存

    7.6   #init() 方法,可以调用 ReferenceBean#get() 方法,进行引用的 Bean 的初始化,最后返回引用 ref 

8.外部化配置 

    8.1 DubboAutoConfiguration ,Dubbo 自动配置类, 扫描对应的注解

    

   

    

发布了331 篇原创文章 · 获赞 1 · 访问量 3500

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/103830120