Nacos优先使用本地Nacos配置文件验证,源头LocalConfigInfoProcessor.getFailover()

简介: Nacos优先使用本地Nacos配置文件验证,源头LocalConfigInfoProcessor.getFailover()

一、前言

分析完SpringBoot启动加载Nacos配置的流程,我们注意到它会优先使用LocalConfigInfoProcessor.getFailover()加载Nacos的本地配置文件,文件路径如下:

user.home/nacos/config/ serverName_nacos/data/config-data-tenant/ tenant/ group/ dataId

其中serverName的构成如下:

fixed- IP_ Port- namespaceId_nacos

上述文件路径构成中,类似user.home的都是变量;tenant为nameSpaceId。

二、验证

1、LocalConfigInfoProcessor类

开始验证之前,我们先了解一下LocalConfigInfoProcessor类的几个关键方法:

1、 getFailover()方法首先会通过 getFailoverFile()获取本地配置文件,然后通过 readFile()读取文件内容;
2、 getSnapshot()方法首先通过 getSnapshotFile()获取远程配置的snapshot文件,然后通过readFile读取;
3、 saveSnapshot()方法会存储从Nacos服务端获取到的新的config;
4、 cleanAllSnapshot方法会清除 snapshot目录下所有缓存文件。

2、验证正文

LocalConfigInfoProcessor.saveSnapshot保存的Nacos远端配置快照数据路径在我本机的文件路径如下:
在这里插入图片描述
其中:

1)/Users/zhouxin是 user.home
2)fixed-127.0.0.1_8848-2c38da96-f654-4105-bbc0-63befaa449f0_nacos是 serverName
3)2c38da96-f654-4105-bbc0-63befaa449f0是 namespaceId
4)DEFAULT_GROUP是 group
5)ls的结果(config1.yaml config2.yaml config3.yaml config5.yaml)是 dataId集合;

开始搞事情!

/Users/zhouxin/nacos/config/fixed-127.0.0.1_8848-2c38da96-f654-4105-bbc0-63befaa449f0_nacos/目录下创建如下文件目录:

/data/config-data-tenant/2c38da96-f654-4105-bbc0-63befaa449f0/DEFAULT_GROUP

在这里插入图片描述

并新建一个config1.yaml文件,内容如下:

student:
  name: saint-local-config-data-tenant

Nacos远端相同nameSpace、Group下的config1.yaml,内容为:

student:
  name: saint--name
spring:
  cloud:
    config:
      # 本地配置允许覆盖远程配置
      override-none: true
      allow-override: false
      override-system-properties: false

启动SpringBoot项目,我们可以看到他在本地目录找到了config1.yaml文件:
在这里插入图片描述
在这里插入图片描述

1)结论

在这里插入图片描述

1、 /data/config-data-tenant/2c38da96-f654-4105-bbc0-63befaa449f0/DEFAULT_GROUP目录下的config1.yaml文件覆盖了Nacos服务端的config1.yaml文件;
2、Nacos服务端的config1.yaml中所有配置全部失效。因为 /data/config-data-tenant/2c38da96-f654-4105-bbc0-63befaa449f0/DEFAULT_GROUP目录下的config1.yaml文件是全量覆盖。

2)再做个实验

/data/config-data-tenant/2c38da96-f654-4105-bbc0-63befaa449f0/DEFAULT_GROUP这个目录下会不会自动生成一些文件,比如我第一次访问Nacos服务端配置之后。

进入到/Users/zhouxin/nacos/config/fixed-127.0.0.1_8848-2c38da96-f654-4105-bbc0-63befaa449f0_nacos目录,先把我们手动添加的文件目录全部删除;
在这里插入图片描述
接着运行SpringBoot项目再ls看一下/Users/zhouxin/nacos/config/fixed-127.0.0.1_8848-2c38da96-f654-4105-bbc0-63befaa449f0_nacos目录;
在这里插入图片描述
嘿,它不会自动添加./data一系列目录文件。

最后,我们一起思考下这个机制的作用是什么?欢迎评论留言

相关文章
|
6天前
|
运维 监控 Java
nacos常见问题之获取配置文件的时候报错user not found如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
727 2
|
6天前
|
运维 Java API
nacos常见问题之Nacos读取配置文件失败如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
6天前
|
运维 Java Nacos
nacos常见问题之读取不到配置文件如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
908 2
|
8月前
|
存储 Nacos 数据库
在 Docker 中部署 Nacos 并挂载配置文件
在 Docker 中部署 Nacos 并挂载配置文件
|
7月前
|
Java Nacos Spring
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
39 1
|
6天前
|
缓存 Java 网络安全
Nacos报错问题之获取配置文件的时候报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
|
6天前
|
前端开发 Java 网络安全
nacos常见问题之Nacos获取配置文件时报错如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
6天前
|
安全 前端开发 Java
Nacos常见问题之如何取得配置文件
Nacos是一款易于使用的动态服务发现、配置管理和服务管理平台,针对不同版本可能出现的兼容性和功能问题,本汇总贴心整理了用户在使用Nacos时可能遇到的版本相关问题及答案,以便用户能够更顺畅地进行服务治理和配置管理。
100 0
|
6天前
|
JSON Java Nacos
spring-gateway 基于 nacos 配置文件的动态路由
spring-gateway 基于 nacos 配置文件的动态路由
76 0
|
9月前
|
存储 SpringCloudAlibaba 数据可视化
SpringCloudAliBaba之Nacos配置中心:轻松管理配置文件
SpringCloudAliBaba之Nacos配置中心:轻松管理配置文件
845 0

热门文章

最新文章