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时的各类疑难杂症。
1748 2
|
6月前
|
运维 Java API
nacos常见问题之Nacos读取配置文件失败如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
6月前
|
运维 Java Nacos
nacos常见问题之读取不到配置文件如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
3947 2
|
存储 Nacos 数据库
在 Docker 中部署 Nacos 并挂载配置文件
在 Docker 中部署 Nacos 并挂载配置文件
|
Java Nacos Spring
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
Nacos spring-cloud 版本没找到共享配置文件的说明,Nacos服务中共享,并且可以被多个应用获取和使用。这个在官网哪里有说明啊
74 1
|
1月前
|
Java Shell Nacos
升级Nacos竟然踩了这种坑?配置文件里的“隐形杀手”!
本文介绍了从Nacos 1.3.0升级到2.3.0的过程及注意事项,涵盖单机与集群模式的升级步骤,特别分享了一次因配置文件中多余空格导致的服务启动失败的经历,提醒读者注意配置细节。
55 0
|
5月前
|
SQL 关系型数据库 数据库
nacos 2.2.3版本 查看配置文件的历史版本的接口 是针对MySQL数据库的sql 改成postgresql后 sql语句报错 该怎么解决
在Nacos 2.2.3中切换到PostgreSQL后,执行配置文件历史版本分页查询出错,因`LIMIT 0, 10`语法不被PostgreSQL支持,需改为`LIMIT 10 OFFSET 0`。仅当存在历史版本时报错。解决方案是调整查询SQL以兼容PostgreSQL语法。
|
5月前
|
数据库连接 网络安全 Nacos
Nacos 的配置文件中修改了数据库的连接地址
Nacos 的配置文件中修改了数据库的连接地址
|
6月前
|
前端开发 Java 网络安全
nacos常见问题之Nacos获取配置文件时报错如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
6月前
|
缓存 Java 网络安全
Nacos报错问题之获取配置文件的时候报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
下一篇
无影云桌面