基于用户态文件系统的前端模块管理器、管理方法及系统技术方案

技术编号:38534274 阅读:15 留言:0更新日期:2023-08-19 17:05
本发明专利技术公开了一种基于用户态文件系统的前端模块管理器,包括:外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;应用隔离单元,用于接收所述隔离层的创建操作指令执行隔离层的创建,生成隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;底层守护进程单元,用于接收所述预设模块信息,并根据隔离层进程ID生成虚拟化模块目录;解决现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,满足如今前端敏捷开发过程中衍生的模块效能需求。端敏捷开发过程中衍生的模块效能需求。端敏捷开发过程中衍生的模块效能需求。

【技术实现步骤摘要】
基于用户态文件系统的前端模块管理器、管理方法及系统


[0001]本专利技术涉及前端开发
,尤其涉及一种基于用户态文件系统的前端模块管理器、管理方法及系统。

技术介绍

[0002]FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。FUSE的核心思想是允许使用用户态程序控制文件系统的相关逻辑,避免了内核态代码难以调试的尴尬处境,又能实现不同的灵活的业务需求。其中,找到目前模块管理领域效率优化问题的核心痛点,来确认FUSE的引入是否值得。
[0003]现有技术中前端模块管理存在的缺点在于:
[0004]1、大量的模块文件解压时间:前端依赖包中通常包含大量的小文件,同时依赖之间还存在复杂的关联,项目node_modules文件夹通常都包含上万个文件,严重限制了模块安装速度,导致在lock和cache都存在的情况也要消耗大量的时间在解压以及小文件I/O上。
[0005]2、项目模块空间没有共享:npm为每一个项目创建一个node_modu les目录,无法共用存储空间,产生了硬盘空间的巨额损耗。
[0006]3、污染全局存储:为了解决上述的问题,pnpm提出了硬链接+软链接的方式解决模块管理问题。但是,pnpm项目的node_modu les无法独立,对系统某一个项目内的模块进行调试会污染全局存储。
[0007]鉴于此,有必要提出一种基于用户态文件系统的前端模块管理方法,解决市面现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,无法满足如今前端敏捷开发过程中衍生的模块效能的需求。

技术实现思路

[0008]本专利技术的目的是提供一种基于用户态文件系统的前端模块管理器、管理方法及系统,解决市面现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,无法满足如今前端敏捷开发过程中衍生的模块效能需求,基于COW(copy on wr ite)技术实现顶层目录镜像层来实现项目的模块隔离,以及使用进程索引的多项目模块管理守护进程,由守护进程生成虚拟化模块目录,绕过模块解压时的大量io时间。并且通过挂载上层可写底层只读的镜像目录,解决业务项目研发中对模块目录的修改污染底层存储的问题。与此同时,根据上层fs进程索引在内存中建立依赖图,支持不同业务项目同时运行。本实施例中每个项目包含多个模块,每个模块内包括多个子文件。
[0009]本专利技术的目的是提供一种基于用户态文件系统的前端模块管理器,包括:
[0010]外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
[0011]应用隔离单元,用于接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程I D,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
[0012]底层守护进程单元,用于接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;跳过现有技术安装模块时下载模块,解压过程中IO的处理时间,跳过多个子文件的复制过程。
[0013]其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
[0014]作为优选地,还包括全局存储单元,用于向各单元提供共享底层存储空间,通过所述应用隔离单元根据所述预设模块的模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。
[0015]作为优选地,所述应用隔离单元为联合文件系统,所述联合文件系统包括合并生成的node_modules虚拟层,所述node_modules虚拟层包括上层及底层在当前节点发出读取目标文件的指令时,,若目标文件存在于上层,则直接读取所述目标文件;若目标文件不存在于上层,则从底层读取所述目标文件;若对所述目标文件进行修改或删除操作时,则基于写时复制机制将虚拟层对底层中的所述目标文件进行复制并传送至上层中得到文件副本,当文件副本产生修改变化时,基于写时复制机制对所述文件副本进行修改;其中,上层为项目独立层Upper Dir,底层为镜像层Lower Dir。
[0016]作为优选地,所述应用隔离单元设置为上层的联合文件系统来隔离模块文件,所述联合文件系统将业务独立的顶层可写的项目独立层和底层的全局存储只读层合并为node_modules目录,用户程序在项目node_modules写入修改的时候,基于写时复制技术保存在项目独立层,保持全局存储只读层只读。
[0017]作为优选地,所述虚拟化模块目录下的模块文件内容根据文件大小、偏移量数据直接从tar归档包读取返回。
[0018]作为优选地,所述底层守护进程单元包括FUSE内核模块和用户态LibFUSE库,其中,所述FUSE内核模块用于与VFS文件系统接口建立连接,接收VFS发出的请求,通过连接控件建立管道并将封装后的请求发送至用户态;所述用户态LibFUSE库用于解析FUSE数据包协议的库代码,在用户态执行相应的请求操作输出结果,并返回到内核态;在工作状态下,接收目标文件读取指令,接收VFS请求传递给对象存储LibFUSE,通过LibFUSE传递给fuse守护进程,根据所述依赖结构识别到读取的目标文件,定位所述目标文件的真实位置并进行全局文件的存储。
[0019]本专利技术的目的是提供一种基于用户态文件系统的前端模块管理方法,包括:
[0020]初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
[0021]接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
[0022]接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原
始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;
[0023]其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
[0024]本专利技术的目的是提供一种基于用户态文件系统的前端模块管理系统,包括:
[0025]服务器以及接入所述服务器的多个客户端;
[0026]每个所述客户端上运行有如本专利技术实施例所述的基于用户态文件系统的前端模块管理器;
[0027]所述服务器上运行有模块库。
[0028]本专利技术的目的是提供一种电子设备,包括:
[0029]存储器,所述存储器用于存储处理程序;...

【技术保护点】

【技术特征摘要】
1.一种基于用户态文件系统的前端模块管理器,其特征在于,包括:外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;应用隔离单元,用于接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;底层守护进程单元,用于接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。2.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,还包括全局存储单元,用于向各单元提供共享底层存储空间,通过所述应用隔离单元根据所述预设模块的模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。3.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述应用隔离单元为联合文件系统,所述联合文件系统包括合并生成的node_modules虚拟层,所述node_modules虚拟层包括上层及底层,在当前节点发出读取目标文件的指令时,若目标文件存在于上层,则直接读取所述目标文件;若目标文件不存在于上层,则从底层读取所述目标文件;若对所述目标文件进行修改或删除操作时,则基于写时复制机制将虚拟层对底层中的所述目标文件进行复制并传送至上层中得到文件副本,当文件副本产生修改变化时,基于写时复制机制对所述文件副本进行修改;其中,上层为项目独立层Upper Dir,底层为镜像层Lower Dir。4.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述应用隔离单元设置为上层的联合文件系统来隔离模块文件,所述联合文件系统将业务独立的顶层可写的项目独立层和底层的全局存储只读层合并为node_modules目录,用户程序在项目node_modules写入修改的时候,基于写时复制技术保存在项目独立层,保持全局存储只读层只读。5.如权利要求1所述的基于用户态文件系统的前端模块管理...

【专利技术属性】
技术研发人员:田昕宗辛晨阳
申请(专利权)人:上海一谈网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1