关于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.第一次一般是直接获取本地的故障转移文件,如果获取到则直接返回,不用再去向Nacos Server发送http请求方式获取,
1.1首先程序会去查找故障转移的文件通过如下代码:

 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的方式来进行拉取。关键代码:

 result = agent.httpGet(Constants.CONFIG_CONTROLLER_PATH, null, params, agent.getEncode(), readTimeout);

如上结果会得到“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.第二次加载时就“带后缀加载,其优先级高于默认值”,会覆盖第一次获取到的配置文件的,此处需要特别注意的是这里的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假如发现没有找到上述文件的话,会向Nacos发送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相当于Nacos Server不可用时一种容灾补救方式。