Dubbo实战介绍1 - 配置方式
dubbo的四种配置方式
dubbo的配置主要分为三大类,服务发现,服务治理和性能调优
服务发现类:表示该配置用于服务的注册于发现,目的是让消费者找到生产者
服务治理类:表示该配置用于治理服务间的关系,或为开发测试提供便利条件
性能调优类:表示该配置用于性能调优,不同的选项会对性能产生不同的影响。
介绍具体的配置之前,我们先看看Dubbo支持的四种配置方式。
1.xml配置
我们可以使用xml对Dubbo进行配置,我们可以像使用Spring的xml配置一样来进行配置。比如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--提供者应用名字-->
<dubbo:application name="provider"/>
<!-- 注册中心的ip地址 -->
<dubbo:registry address="zookeeper://xxx.xxx.xx.xx:2181"/>
<!--声明dubbo协议跟端口-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--声明需要暴露的接口-->
<dubbo:service interface="com.yang.test.api.TestService" ref="testServcie"/>
<!--和本地bean一样实现服务-->
<bean id="testServcie" class="com.yang.test.service.impl.TestServiceImpl"/>
</beans>
以上配置就是使用了Dubbo扩展的dubbo:application dubbo:registry dubbo:service等等标签,标签的具体介绍后面会讲
<dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
<dubbo:reference/> 引用配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
<dubbo:protocol/> 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
<dubbo:application/> 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
<dubbo:module/> 模块配置,用于配置当前模块信息,可选。
<dubbo:registry/> 注册中心配置,用于配置连接注册中心相关信息。
<dubbo:monitor/> 监控中心配置,用于配置连接监控中心相关信息,可选。
<dubbo:provider/> 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
<dubbo:consumer/> 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。 <dubbo:argument/> 用于指定方法参数配置。
配置覆盖的优先级
方法级别优先,接口次之,全局配置再次之
如果级别一样,则消费者优先,提供者次之。
小建议:虽然消费者优先,但是建议设置生产者,比如超时timeout。因为提供者更清楚一个方法需要执行多久。
属性设置
我们还可以对Dubbo使用properties文件进行设置。比如存在公共配置很简单,又没有多注册中心和多协议等的情况。Dubbo会自动加载classpath根目录的dubbo.properties文件,也可以使用jvm的启动参数-Dubbo.properties.file=mydubbo.propertis来指定文件的位置
下面是一个dubbo.properties的一个配置示例。
dubbo.application.name=provider
dubbo.application.owner=test
dubbo.registry.address=zookeeper://xxx.xxx.xx.xx:2181
1、属性的配置规则遵循以下约定:
讲xml配置的标签名加属性名叫,用点分割,将多个属性拆成多个行,比如:
dubbo.application.name=provider 等价于 <dubbo:application name="provider"/>
如果xml有多行同名标签配置,则可用id号区分,如果没有id号,则将对所有的同名标签生效
2、配置方式的优先级别
1、jvm启动-D参数优先。xml次之,properties最后(相当于默认值,只有没有xml时候,dubbo.properties才会生效)
API配置
也可以通过程序代码对dubbo进行配置,该方式一般用于test,mock等,生产环境推荐用xml方式和属性方式
API属性配置与xml配置项是一一对应的,比如 ApplicationConfig application = new ApplicationConfig();application.setName("dubbo-api-test");等价于<dubbo:application name="provider"/>
参考下面的链接:
https://blog.csdn.net/superdaojian/article/details/80494735
注解配置
还可以使用注解对Dubbo进行配置,该方式是2.5.7版本之后新增的,可以大量节省xml配置和属性配置,配置风格像springboot
https://blog.csdn.net/kinweini/article/details/81022606