目录
1.属性加载顺序
2.启动检查
2.1.消费者启动检查服务是否可用
2.1.1.单个服务
2.1.2.多个服务
2.2.启动检查注册中心是否可用
3.超时设置
4.重试次数
5.多版本
1.属性加载顺序
属性配置分以下几类
- xml配置
- api配置
- 注解配置
以属性配置的方式来配置dubbo应用
如果需要配置文件外部挂载,可以使用JVM参数来指定路径:
-Ddubbo.properties.file=xxx.properties
重写和优先级
优先级从高到低
- JVM -D 参数:当你部署或者启动应用时,它可以轻易地重写配置;
- XML:XML 中的当前配置会重写 dubbo.properties 中的;
- Properties:默认配置,仅仅作用于以上两者没有配置时。
这里需要注意一点是,springboot的配置文件application.yml中的dubbo配置等价于XML方式,优先级排第二位
2.启动检查
dubbo默认会在启动时检查依赖的服务是否可用,不可用时会抛出异常,默认 check="true"
可以通过 check="false"
关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动
2.1.消费者启动检查服务是否可用
2.1.1.单个服务
xml配置方式如下:
<dubbo:reference id="testService" version="1.0.0.1"
interface="com.xe.base.service.ITestService" check="false" />
注解方式如下:
@DubboReference(version = "1.0.0",check = false)
private ITestService testService;
2.1.2.多个服务
有很多种方法:
一种直接在application.yml中增加
dubbo:
consumer:
check: false
一种新建一个dubbo.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:consumer check="false"/>
</beans>
启动器上添加
@ImportResource(value = {"classpath:dubbo.xml"})
public class XeWebApplication
2.2.启动检查注册中心是否可用
关闭启动是检测注册中心是否可用的功能,如果有dubbo.xml文件,则配置如下:
<dubbo:registry check="false" />
或者在application.yml中配置也可以
dubbo:
registry:
address: zookeeper://127.0.0.1:2181
check: false
3.超时设置
timeout=0,默认是1000ms
两个原则:
- 方法级优先,接口级次之,全局配置再次之
- 如果级别一样,则消费者优先,提供者次之
4.重试次数
当某个服务由于网络不佳或者运行超时,方法远程调用失败,我们可以调整重试次数,让它多尝试几次
重试次数是一个整数,不包含第一次调用
<dubbo:consumer retries="2"></dubbo:consumer>
<!-- 或者 -->
dubbo:
consumer:
retries: 3
当有多个服务提供方的时候,在当前服务实例调用失败后,会尝试调用其他服务实例
5.多版本
当一个接口的功能出现了不兼容的升级,出现了多个实现类
可以按照以下的步骤进行版本迁移:
- 在低压力时间段,先升级一半提供者为新版本
- 再将所有消费者升级为新版本
- 然后将剩下的一半提供者升级为新版本
<!-- 服务提供者 -->
@DubboService(version = "1.0.0")
@DubboService(version = "2.0.0")
<!-- 或者 -->
<dubbo:service interface="com.foo.BarService" version="1.0.0" />
<dubbo:service interface="com.foo.BarService" version="2.0.0" />
<!-- 服务消费者 -->
@DubboReference(version = "1.0.0")
@DubboReference(version = "2.0.0")
<!-- 或者 -->
<dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />
<dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />
如果不需要区分版本,则
<dubbo:reference id="barService" interface="com.foo.BarService" version="*" />