一,配置之间的关系
二,标签
1,<dubbo:service/>标签:
作用:服务配置
解释:用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" />
2,<dubbo:reference/>标签:
作用:引用配置
解释:用于创建一个远程服务代理,一个引用可以指向多个注册中心
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="demoService" interface="org.apache.dubbo.demo.DemoService" />
3,<dubbo:protocol/>标签:
作用:协议配置
解释:用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
4,<dubbo:application/>标签:
作用:应用配置
解释:用于配置当前应用信息,不管该应用是提供者还是消费者
<dubbo:application name="demo-consumer"/>
5,<dubbo:module/>标签:
作用:模块配置
解释:用于配置当前模块信息,可选
<dubbo:module name="demo-module"/>
6,<dubbo:registry/>标签:
作用:注册中心配置
解释:用于配置连接注册中心相关信息
<dubbo:registry group="aaa" address="zookeeper://127.0.0.1:2181"/>
7,<dubbo:monitor/>标签:
作用:监控中心配置
解释:用于配置连接监控中心相关信息,可选
<!-- 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心。-->
<dubbo:monitor protocol="registry"/>
8,<dubbo:provider/>标签:
作用:提供方配置
解释:当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选(该标签为 <dubbo:service> 和 <dubbo:protocol> 标签的缺省值设置。)
<dubbo:provider id="provider"/>
9,<dubbo:method/>标签:
作用:方法配置
解释:用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
<dubbo:reference interface="com.xxx.XxxService">
<dubbo:method name="findXxx" timeout="3000" retries="2" />
</dubbo:reference>
10,<dubbo:consumer/>标签:
作用:消费方配置
解释:当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选。该标签为 <dubbo:reference> 标签的缺省值设置。
11,<dubbo:argument/>标签:
作用:参数配置
解释:该标签为 <dubbo:method> 的子标签,用于方法参数的特征描述,
<dubbo:method name="findXxx" timeout="3000" retries="2">
<dubbo:argument index="0" callback="true" />
</dubbo:method>
三,不同粒度配置的覆盖关系
以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:
- 方法级优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。
(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。
理论上 ReferenceConfig 中除了interface
这一项,其他所有配置项都可以缺省不配置,框架会自动使用ConsumerConfig,ServiceConfig, ProviderConfig等提供的缺省配置。
详情可参考Dubbo文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html