關(guān)于nacos的data 目錄和 snapshot-tenant 目錄在實際工程啟動的時候是如何選擇的:
基于naocs 1.4.2 版本
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.2</version> <scope>compile</scope> </dependency>
1 private void loadApplicationConfiguration( 2 CompositePropertySource compositePropertySource, String dataIdPrefix, 3 NacosConfigProperties properties, Environment environment) { 4 String fileExtension = properties.getFileExtension(); 5 String nacosGroup = properties.getGroup(); 6 // 第一次加載load directly once by default 7 loadNacosDataIfPresent(compositePropertySource, dataIdPrefix, nacosGroup, 8 fileExtension, true); 9 // 第二次加載load with suffix, which have a higher priority than the default 10 loadNacosDataIfPresent(compositePropertySource, 11 dataIdPrefix + DOT + fileExtension, nacosGroup, fileExtension, true); 12 // Loaded with profile, which have a higher priority than the suffix 13 for (String profile : environment.getActiveProfiles()) { 14 String dataId = dataIdPrefix + SEP1 + profile + DOT + fileExtension; 15 loadNacosDataIfPresent(compositePropertySource, dataId, nacosGroup, 16 fileExtension, true); 17 } 18 19 }
1.第一次一般是直接獲取本地的故障轉(zhuǎn)移文件,如果獲取到則直接返回,不用再去向Nacos Server發(fā)送http請求方式獲取,
1.1首先程序會去查找故障轉(zhuǎn)移的文件通過如下代碼:
String content = LocalConfigInfoProcessor.getFailover(agent.getName(), dataId, group, tenant);
重點會去目錄“C:\Users\zm_pc\nacos\config\fixed-brokernacos.newtest.huaxiacloud.com-broker-loc_nacos\data\config-data-tenant\broker-loc\loc\broker-bam-service-local-zm”底下查找,然后通過http的方式來進行拉取。關(guān)鍵代碼:
result = agent.httpGet(Constants.CONFIG_CONTROLLER_PATH, null, params, agent.getEncode(), readTimeout);
如上結(jié)果會得到“RestResult{code=404, message='config data not exist', data=null}”
,然后會去刪除【快照文件】文件“C:\Users\zm_pc\nacos\config\fixed-brokernacos.newtest.huaxiacloud.com-broker-loc_nacos\snapshot-tenant\broker-loc\loc\broker-bam-service-local-zm”底下的所有文件
2.第二次加載時就“帶后綴加載,其優(yōu)先級高于默認值”,會覆蓋第一次獲取到的配置文件的,此處需要特別注意的是這里的dataId為(dataIdPrefix + DOT + fileExtension,即broker-bam-service-local-zm+"."+properties)
2.1先去目錄 “C:\Users\zm_pc\nacos\config\fixed-brokernacos.newtest.huaxiacloud.com-broker-loc_nacos\data\config-data-tenant\broker-loc\loc”底下查找文件:
broker-bam-service-local-zm.properties
2.2假如發(fā)現(xiàn)沒有找到上述文件的話,會向Nacos發(fā)送http請求,path=/v1/cs/configs,params=dataId+group+tenant(namespace),會得到如下文件:
C:\Users\zm_pc\nacos\config\fixed-brokernacos.newtest.huaxiacloud.com-broker-loc_nacos\snapshot-tenant\broker-loc\loc\broker-bam-service-local-zm.properties
2.3ServerHttpAgent是帶有異常重試機制的,重試后如果最終還是失敗,則查看本地是否存在配置快照文件SnapshotFile,有則讀取返回,否則返回null,SnapshotFile相當(dāng)于Nacos Server不可用時一種容災(zāi)補救方式。
浙公網(wǎng)安備 33010602011771號