Nacos源码系列

nacos 源码解析系列(五)

2020-07-20  本文已影响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);
        }
上一篇下一篇

猜你喜欢

热点阅读