【Nacos源码之配置管理 五】为什么把配置文件Dump到磁盘中

简介: 上一篇文章 【Nacos源码之配置管理 四】DumpService如何将配置文件全部Dump到磁盘中 分析了Nacos将配置文件Dump的磁盘中,那我为什么要Dump到磁盘中呢?这样做有什么好处?哪些地方读取了磁盘中的文件?带着这些问题,我们去源码中一探究竟

Part1前言

上一篇文章 【Nacos源码之配置管理 四】DumpService如何将配置文件全部Dump到磁盘中 分析了Nacos将配置文件Dump的磁盘中,那我为什么要Dump到磁盘中呢?这样做有什么好处?哪些地方读取了磁盘中的文件?带着这些问题,我们去源码中一探究竟;

1.快速启动,将数据库中的数据与磁盘对比MD5判断是否修改

//  Dump 修改过的配置文件
 static public boolean dumpChange(String dataId, String group, String tenant, String content, long lastModifiedTs) {
        //省略....
            final String md5 = MD5.getInstance().getMD5String(content);
            if (!STANDALONE_MODE || PropertyUtil.isStandaloneUseMysql()) {
                 /**读取本地磁盘文件的MD5**/
                String loacalMd5 = DiskUtil.getLocalConfigMd5(dataId, group, tenant);
                if (md5.equals(loacalMd5)) {
                    dumpLog.warn(
                        "[dump-ignore] ignore to save cache file. groupKey={}, md5={}, lastModifiedOld={}, "
                            + "lastModifiedNew={}",
                        groupKey, md5, ConfigService.getLastModifiedTs(groupKey), lastModifiedTs);
                } else {
                    DiskUtil.saveToDisk(dataId, group, tenant, content);
                }
            }
    }

2. 同步配置获取接口ConfigServletInner.doGetConfig

这是一个Http请求调用的接口,这是获取配置数据的接口,最终是调用了 DiskUtil.targetFile(dataId, group, tenant); 方法得到配置文件; 然后把文件中的信息返回到Response中给请求方;

注意: 配置中心的内存是没有保存配置信息content的;因为content一般数据都不小;全部存放到内存中,对Jvm的内存占用比较大,所以内存只保存了基本信息;content具体内容保存在磁盘中; 等客户端发起Http请求获取对应配置信息的时候,再去磁盘中读取返回给客户端;  读取磁盘文件肯定是比读取数据库效率要高高的;

为什么要把配置文件Dump到磁盘中

Dump配置文件到磁盘中可以提高性能; 客户端想要请求配置数据的时候,发起Http请求给服务端; 服务端会去磁盘中读取对应文件返回; 读取磁盘文件比直接读取数据库效率要高; 然后服务端会跟最新的数据会保持一致,如果修改了配置,不仅Jvm内存数据会更新,也会把最新的content内容及时保存到磁盘文件中;

相关文章
|
3月前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
272 0
|
27天前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
74 0
|
1月前
|
Java Shell Nacos
升级Nacos竟然踩了这种坑?配置文件里的“隐形杀手”!
本文介绍了从Nacos 1.3.0升级到2.3.0的过程及注意事项,涵盖单机与集群模式的升级步骤,特别分享了一次因配置文件中多余空格导致的服务启动失败的经历,提醒读者注意配置细节。
56 0
|
4月前
|
Java 数据库连接 Nacos
nacos配置管理拉取不到配置异常
在搭建Nacos配置时遇到异常,因配置了`file-extension: yaml`,服务尝试拉取`shared-jdbc.yaml`, `shared-log.yaml`, `shared-swagger.yaml`,但Nacos中这些共享配置的Data ID无后缀。修正方法是确保Data ID与预期文件名一致,包括.yaml扩展名。在验证中,修改了部分Data ID并导致服务因找不到未加后缀的`jdbc`配置而报错,提示在配置Data ID时应包含文件扩展名。
199 1
|
3月前
|
关系型数据库 MySQL Java
“惊呆了!无需改动Nacos源码,轻松实现SGJDBC连接MySQL?这操作太秀了,速来围观,错过等哭!”
【8月更文挑战第7天】在使用Nacos进行服务治理时,常需连接MySQL存储数据。使用特定的SGJDBC驱动连接MySQL时,一般无需修改Nacos源码。需确保SGJDBC已添加至类路径,并在Nacos配置文件中指定使用SGJDBC的JDBC URL。示例中展示如何配置Nacos使用MySQL及SGJDBC,并在应用中通过Nacos API获取配置信息建立数据库连接,实现灵活集成不同JDBC驱动的目标。
118 0
|
5月前
|
Java Nacos 数据格式
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
213 3
|
5月前
|
开发框架 .NET Nacos
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
512 0
|
5月前
|
数据库连接 网络安全 Nacos
Nacos 的配置文件中修改了数据库的连接地址
Nacos 的配置文件中修改了数据库的连接地址
|
5月前
|
SpringCloudAlibaba 安全 Java
SpringCloudalibaba之Nacos的配置管理
如图所示,nacos-config-example被192.168.56.1获取过。
177 0
|
18天前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
50 1
Nacos配置中心
下一篇
无影云桌面