關(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)補救方式。