2.dubbo源码分析之API配置一(应用)

Posted bilifuture

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.dubbo源码分析之API配置一(应用)相关的知识,希望对你有一定的参考价值。

dubbo配置很灵活,目前提供了4中配置方式:

1.api配置

2.属性配置

3.xml配置

4.注解配置

所有配置项大致分三类:

1.服务发现:表示这个配置项用于服务的注册和发现,目的让消费者找到提供方

2.服务治理:表示这个配置项用于服务治理之间的关系

3.性能优化:表示这个配置项用于调优性能,不能选项对性能产生影响

所有的配置都会转换成Dubbo URL表示,并且有服务提供方生成,经由注册中心传递给消费方,每个属性对应URL的参数.

配置相关模块

dubbo-config-api项目结构如下:

官方关于api方法的消费者的一段代码如下:

2.dubbo源码分析之API配置一(应用)

1. AbstractConfig

AbstractConfig是一个抽象类配置,除了ArgumentConfig,可以看到所有的配置都继承这个类.AbstractConfig主要提供配置解析和校验相关工具方法.

2.dubbo源码分析之API配置一(应用)

id属性,配置对应的编号,适用于除了api配置的方式之外的另外3中方式,标记一个配置对象,可用于对应对象之间的引用,比如xml的<dubbo:service provider="${PROVIDER_ID}">,里边的provider是<dubbo:provider>的id属性.

1.1 appendParameters

appendParameters方法作用把配置对象的属性添加到参数集合中,如下:

2.dubbo源码分析之API配置一(应用)

1.2 appendAttributes

appendAttributes方法把@Parameter(attribute=true)配置的对象的属性添加到参数集合中,如下:

2.dubbo源码分析之API配置一(应用)

1.3 appendAnnotation

appendAnnotation方法,读取注解配置到配置对象,如下:

2.dubbo源码分析之API配置一(应用)

1.4 appendProperties

appendProperties方法用来读取环境变量和properties配置到配置对象,如下:

2.dubbo源码分析之API配置一(应用)

2.ApplicationConfig

ApplicationConfig对应应用的配置信息,属性解释参见官方<dubbo用户指南--dubbo:application>文档

3.RegistryConfig

RegistryConfig对应注册中心配置,属性解释参见官方<dubbo用户指南--dubbo:registry>文档

4.ModuleConfig

ModuleConfig对应模块信息配置,属性解释参见官方<dubbo用户指南--dubbo:module>文档

5.MonitorConfig

MonitorConfig对应监控中心配置,属性解释参见官方<dubbo用户指南--dubbo:monitor>文档

6.ArgumentConfig

ArgumentConfig对应方法参数配置,属性解释参见官方<dubbo用户指南--dubbo:argument>文档

7.URL

com.alibaba.dubbo.common.URL,成员属性如下:

2.dubbo源码分析之API配置一(应用)

之前介绍所有的配置最终都会转成dubbo url来表示(dubbo中使用URL作为通用模型,贯穿整个RPC流程)并且由服务提供方生成,经注册中心传递消息给消费方,各个属性对应url的参数,参见配置项一览中的对应url参数那一列,一个service注册到注册中心格式如下:

dubbo://192.168.3.17:28080/com.bilifuture.service.UserService?anyhost=true&application=user-provider&default.delay=-1&default.retries=0&default.service.filter=UserFilter&delay=-1&dubbo=2.0.0&generic=false&interface=com.bilifuture.service.UserService&mehtod=sayHello&pid=19031&side=provider×tamp=123456654123

格式为:

protocol://username:password@host:port/path?key=value&key=value...通过URL.buildString()方法来生成

parameters属性,参数集合,从上面的Service URL例子可以看出里边的key=value实际就是Service对应的配置项,这个属性通过AbstractConfig.appendParameters()方法生成的.

8.@Parameter

Parameter注解,用于Dubbo URL的Paramter的拼接,如下:




以上是关于2.dubbo源码分析之API配置一(应用)的主要内容,如果未能解决你的问题,请参考以下文章

dubbo同步调用异步调用和是否返回结果源码分析和实例

Apache Dubbo 服务发布源码分析

Apache Dubbo 服务发布源码分析

Apache Dubbo 服务发布源码分析

Apache Dubbo 服务发布源码分析

Apache Dubbo 服务发布源码分析