美文网首页Nacos源码系列
nacos 源码解析系列(五)

nacos 源码解析系列(五)

作者: 逗逼程序员 | 来源:发表于2020-07-20 10:29 被阅读0次

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

    今天我们来探讨一个问题,Nacos 为什么要将配置文件全部dump到磁盘中,这样有什么好处呢?哪些地方读取了磁盘中的文件?

    直接上结论思想:

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

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

         try {
                final String md5 = MD5Utils.md5Hex(content, Constants.ENCODE);
                if (!PropertyUtil.isDirectRead()) {
                    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, ConfigCacheService.getLastModifiedTs(groupKey),
                                lastModifiedTs);
                    } else {
                        DiskUtil.saveToDisk(dataId, group, tenant, content);
                    }
                }
                updateMd5(groupKey, md5, lastModifiedTs);
                return true;
            } catch (IOException ioe) {
                dumpLog.error("[dump-exception] save disk error. " + groupKey + ", " + ioe.toString(), ioe);
                return false;
            } finally {
                releaseWriteLock(groupKey);
            }
    

    相关文章

      网友评论

        本文标题:nacos 源码解析系列(五)

        本文链接:https://www.haomeiwen.com/subject/ygdekktx.html