W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
將Dubbo應(yīng)用的配置放到外部集中管理
外部化配置目的之一是實現(xiàn)配置的集中式管理,這部分業(yè)界已經(jīng)有很多成熟的專業(yè)配置系統(tǒng)如 Apollo, Nacos 等,Dubbo 所做的主要是保證能配合這些系統(tǒng)正常工作。
外部化配置和其他本地配置在內(nèi)容和格式上并無區(qū)別,可以簡單理解為 dubbo.properties 的外部化存儲,配置中心更適合將一些公共配置如注冊中心、元數(shù)據(jù)中心配置等抽取以便做集中管理。
# 將注冊中心地址、元數(shù)據(jù)中心地址等配置集中管理,可以做到統(tǒng)一環(huán)境、減少開發(fā)側(cè)感知。
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.simplified=true
dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.application.qos.port=33333
從配置中心讀取外部化配置,可以按照下面的方法指定配置中心:
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
或者
dubbo.config-center.address=zookeeper://127.0.0.1:2181
或者
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://127.0.0.1:2181");
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
默認所有的配置都存儲在 /dubbo/config 節(jié)點,具體節(jié)點結(jié)構(gòu)圖如下:
<dubbo:config-center protocol="apollo" address="127.0.0.1:2181"/>
Apollo中的一個核心概念是命名空間 - namespace(和上面zookeeper的namespace概念不同),在這里全局和應(yīng)用級別配置就是通過命名空間來區(qū)分的。
默認情況下,Dubbo會從名叫dubbo(由于 Apollo 不支持特殊后綴 .properties )的命名空間中讀取全局配置(<dubbo:config-center namespace="your namespace">)
由于 Apollo 也默認將會在 dubbo namespace 中存儲服務(wù)治理規(guī)則(如路由規(guī)則),建議通過單獨配置 group 將服務(wù)治理和配置文件托管分離開,以 XML 配置方式為例:
<dubbo namespace="governance" group ="dubbo"/>
這里,服務(wù)治理規(guī)則將存儲在 governance namespace,而配置文件將存儲在 dubbo namespace,如下圖所示:
關(guān)于文件配置托管,相當于是把 dubbo.properties 配置文件的內(nèi)容存儲在了 Apollo 中,應(yīng)用通過關(guān)聯(lián)共享的 dubbo namespace 繼承公共配置, 應(yīng)用也可以按照 Apollo 的做法來覆蓋個別配置項。
<dubbo:config-center address="nacos://127.0.0.1:8848?username=nacos&password=nacos">
</dubbo:config-center>
Nacos雖然也存在命名空間 - namespace 的概念,但在 namespace 之下,還存在 group 概念。即通過 namespace 和 group 以及 dataId 去定位一個配置項,在不指定 namespace 的情況下,默認使用 public 作為默認的命名空間。
在默認情況下,全局配置會讀取 namespace : public,dataId: dubbo.properties,group: dubbo 配置項中的內(nèi)容作為全局配置。應(yīng)用級別的 group 和全局級別的 group 存在一點差異, 應(yīng)用級別會讀取 namespace: public,dataId: dubbo.properties,group: your application name 作為應(yīng)用級別的配置。
全局:
應(yīng)用級別:
所謂 Dubbo 對配置中心的支持,本質(zhì)上就是把 .properties 從遠程拉取到本地,然后和本地的配置做一次融合。理論上只要 Dubbo 框架能拿到需要的配置就可以正常的啟動,它并不關(guān)心這些配置是自己加載到的還是應(yīng)用直接塞給它的,所以Dubbo還提供了以下API,讓用戶將自己組織好的配置塞給 Dubbo 框架(配置加載的過程是用戶要完成的),這樣 Dubbo 框架就不再直接和 Apollo 或 Zookeeper 做讀取配置交互。
// 應(yīng)用自行加載配置
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);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: