配置中心(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
而應用自有的配置,會從application命名空間讀取// 應用自行加載配置
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);
複製代碼