整合配置中心
1. 配置中心的作用
配置中心在Dubbo中可承担两类职责:
- 启动参数的集中式存储。
- 流量治理规则集中式存储。
值得注意的是Dubbo动态配置中心定义了两个不同层次的隔离选项,分别是namespace(默认值public)和group(默认值dubbo)。
2. 配置加载流程
Dubbo配置加载大概分为两个阶段: 第一阶段为DubboBootstrap初始化之前,在Spring context启动时解析处理XML配置/注解配置/Java-config或者是执行API配置代码,创建config bean并且加入到ConfigManager中。
第二阶段为DubboBootstrap初始化过程,从配置中心读取外部配置,依次处理实例级属性配置和应用级属性配置,最后刷新所有配置实例的属性,也就是属性覆盖。
我们使用的配置中心的配置就是属于第二阶段DubboBootstrap初始化过程中。开启外部化配置后,registry、metadata-report、protocol、qos等全局范围的配置理论上都不再需要在应用中配置,应用开发侧专注业务服务配置,一些全局共享的全局配置转而由运维人员统一配置在远端配置中心。
3. 使用Zookeeper作为配置中心
3.1 添加依赖
3.2 配置启用Zookeeper
yml
dubbo
config-center
address: zookeeper://127.0.0.1:2181
# 如果Zookeeper开启认证
# username: hello
# password: 1234
3.2 ZK配置结构
存储结构如下图所示:
namespace
: 用于不同配置的环境隔离。config
: Dubbo约定的固定节点,不可更改,所有配置和流量治理规则都存储在此节点下。dubbo
与application
: 分别用来隔离全局配置、应用级别配置:dubbo是默认group值,application对应应用名dubbo.properties
: 此节点的node value存储具体配置内容
4. 使用Nacos作为配置中心
4.1 增加依赖
4.2 配置启用Nacos
yml
dubbo
config-center
address: nacos://127.0.0.1:8848
## 认证
address: nacos://localhost:8848?username=nacos&password=nacos
4.3 在线配置Nacos
Nacos Server增加配置: