配置加载流程

在SpringBoot应用启动阶段,Dubbo的读取配置遵循以下原则

  1. Dubbo支持了多层级的配置,按照预先定义的优先级自动实现配置之间的覆盖,最终所有的配置汇总到数据总线URL后,驱动后续的服务暴露、引用等流程。
  2. ApplicationConfig、ServiceConfig、ReferenceConfig可以被理解成配置来源的一种,是直接面向用户编程的配置采集方式。
  3. 配置的格式以properties为主。

配置来源

  • JVM系统属性,-D参数
  • 外部化配置
  • ServiceConfig、ReferenceConfig等编程接口采集的配置
  • 本地配置文件 dubbo.properties

覆盖关系

JVM参数配置 > 外部配置 > Spring/API配置 > 本地配置文件

JVM参数配置-Ddubbo.protocol.port=20881

配置格式

目前Dubbo支持的所有配置都是.properties格式的,包括-D、Externalized Configuration等,.properties中的所有配置项遵循一种path-based的配置格式:

  • 应用级别

dubbo.application.name=demo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=-1
  • 服务级别

dubbo.service.org.apache.dubbo.samples.api.DemoService.timeout=5000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.timeout=6000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.sayHello.timeout=7000
  • 多配置项
dubbo.registries.unit1.address=zookeeper://127.0.0.1:2181 dubbo.registries.unit2.address=zookeeper://127.0.0.1:2182
dubbo.protocols.dubbo.name=dubbo
dubbo.protocols.dubbo.port=20880
dubbo.protocols.hessian.name=hessian
dubbo.protocols.hessian.port=8089
  • 扩展配置
dubbo.application.parameters.item1=value1
dubbo.application.parameters.item2=value2
dubbo.registry.parameters.item3=value3 dubbo.reference.org.apache.dubbo.samples.api.DemoService.parameters.item4=value4

配置方式

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://dubbo.apache.org/schema/dubbo"
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:application name="dubbo-provider"></dubbo:application> <!--指定注册中心-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> <!--指定通信规则-->
<dubbo:protocol name="dubbo" port="-1"></dubbo:protocol> <bean id="userAddressImpl" class="cn.edu.nyist.provider.serviceImpl.UserAddressImpl"/> <!--暴露服务的接口 ref指向实现的对象-->
<dubbo:service interface="cn.edu.nyist.service.UserAddressService" ref="userAddressImpl"></dubbo:service> <!--自动选取监控中心-->
<dubbo:monitor protocol="registry"></dubbo:monitor>
</beans>

Spring也可采用注解配置

import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component; @Service
@Component
public class UserAddressImpl implements UserAddressService {
@Override
public List<UserAddress> getUserAddressList(String userId) {
UserAddress userAddress1 = new UserAddress(userId, "小王", "花果山水帘洞11号", "12456657");
UserAddress userAddress2 = new UserAddress(userId, "小王", "盘丝洞12号", "666666");
return Arrays.asList(userAddress1, userAddress2);
}
}

SpringBoot中的application配置

dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.monitor.protocol=registry

最新文章

  1. 表单提交按钮input和button、a的差异
  2. 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉
  3. Android反编译(二)之反编译XML资源文件
  4. NOI模拟赛Day2
  5. CSS3:transform translate transition 这些都是什么?
  6. eclipse Juno Indigo Helios Galileo这几种版本的意思
  7. MVC之视图的布局
  8. 图像JPEG格式介绍
  9. JPA多对多@manytomany注解配置实例
  10. 可持久化trie 学习总结
  11. Oracle单表的复杂查询
  12. java自动装箱的陷阱
  13. Mybatis基本用法--上
  14. CentOS6.9编译安装nginx1.4.7
  15. Java-NIO(六):Channel聚集(gather)写入与分散(scatter)读取
  16. 执行C#动态代码
  17. 问题1:canvas绘制图片加载不出来
  18. 4,EasyNetQ-Request Response
  19. L207
  20. 在线HTTP速度测试(响应时间测试)及浏览器兼容测试

热门文章

  1. Codeforces Edu Round 61 A-C + F
  2. mysql扩展百分位函数(类似SUM)
  3. 自定义radio、checkbox的样式
  4. Sublime2-3 Package Control安装
  5. Pytest 系列(27)- allure 命令行参数
  6. Spark SQL 小文件问题处理
  7. Java8中执行js脚本
  8. 利用Java Flight Recorder(JFR)诊断timing及内存问题
  9. 最详细10招Spark数据倾斜调优
  10. SQL学习(三) 复杂查询