配置中心(v2.7.0)在Dubbo中承担两个职责:node
启用动态配置(以Zookeeper为例,可查看动态配置配置项详解):bash
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
复制代码
或者app
dubbo.config-center.address=zookeeper://127.0.0.1:2181
复制代码
或者框架
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://127.0.0.1:2181");
复制代码
# 将注册中心地址、元数据中心地址等配置集中管理,能够作到统一环境、减小开发侧感知。
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.simplified=true
dubbo.metadataReport.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.application.qos.port=33333
复制代码
外部化配置默认较本地配置有更高的优先级,所以这里配置的内容会覆盖本地配置值,你也可经过如下选项调整配置中心的优先级:spa
-Ddubbo.configCenter.highestPriority=false
复制代码
外部化配置有全局和应用两个级别,全局配置是全部应用共享的,应用级配置是由每一个应用本身维护且只对自身可见的。设计
当前已支持的扩展实现有Zookeeper、Apollo。code
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
复制代码
默认全部的配置都存储在/dubbo/config节点,具体节点结构图以下:router
<dubbo:config-center protocol="apollo" address="127.0.0.1:2181"/>
复制代码
Apollo中的一个核心概念是命名空间 - namespace(和上面zookeeper的namespace概念不一样),在这里全局和应用级别配置就是经过命名空间来区分的。 默认状况下,Dubbo会从名叫dubbo的命名空间中读取全局配置(<dubbo:config-center namespace="your namespace">)cdn
// 应用自行加载配置
Map<String, String> dubboConfigurations = new HashMap<>();
dubboConfigurations.put("dubbo.registry.address", "zookeeper://127.0.0.1:2181");
dubboConfigurations.put("dubbo.registry.simplified", "true");
//将组织好的配置塞给Dubbo框架
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setExternalConfig(dubboConfigurations);
复制代码