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方法的消费者的一段代码如下:
1. AbstractConfig
AbstractConfig是一个抽象类配置,除了ArgumentConfig,可以看到所有的配置都继承这个类.AbstractConfig主要提供配置解析和校验相关工具方法.
id属性,配置对应的编号,适用于除了api配置的方式之外的另外3中方式,标记一个配置对象,可用于对应对象之间的引用,比如xml的<dubbo:service provider="${PROVIDER_ID}">,里边的provider是<dubbo:provider>的id属性.
1.1 appendParameters
appendParameters方法作用把配置对象的属性添加到参数集合中,如下:
1.2 appendAttributes
appendAttributes方法把@Parameter(attribute=true)配置的对象的属性添加到参数集合中,如下:
1.3 appendAnnotation
appendAnnotation方法,读取注解配置到配置对象,如下:
1.4 appendProperties
appendProperties方法用来读取环境变量和properties配置到配置对象,如下:
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,成员属性如下:
之前介绍所有的配置最终都会转成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配置一(应用)的主要内容,如果未能解决你的问题,请参考以下文章