CN116594978A - 基于用户态文件系统的前端模块管理器、管理方法及系统 - Google Patents
基于用户态文件系统的前端模块管理器、管理方法及系统 Download PDFInfo
- Publication number
- CN116594978A CN116594978A CN202310534683.8A CN202310534683A CN116594978A CN 116594978 A CN116594978 A CN 116594978A CN 202310534683 A CN202310534683 A CN 202310534683A CN 116594978 A CN116594978 A CN 116594978A
- Authority
- CN
- China
- Prior art keywords
- layer
- module
- user
- file system
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims description 23
- 238000002955 isolation Methods 0.000 claims abstract description 75
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000008569 process Effects 0.000 claims abstract description 36
- 238000012986 modification Methods 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 5
- 238000009434 installation Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 125000006850 spacer group Chemical group 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于用户态文件系统的前端模块管理器,包括:外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;应用隔离单元,用于接收所述隔离层的创建操作指令执行隔离层的创建,生成隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;底层守护进程单元,用于接收所述预设模块信息,并根据隔离层进程ID生成虚拟化模块目录;解决现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,满足如今前端敏捷开发过程中衍生的模块效能需求。
Description
技术领域
本发明涉及前端开发技术领域,尤其涉及一种基于用户态文件系统的前端模块管理器、管理方法及系统。
背景技术
FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。FUSE的核心思想是允许使用用户态程序控制文件系统的相关逻辑,避免了内核态代码难以调试的尴尬处境,又能实现不同的灵活的业务需求。其中,找到目前模块管理领域效率优化问题的核心痛点,来确认FUSE的引入是否值得。
现有技术中前端模块管理存在的缺点在于:
1、大量的模块文件解压时间:前端依赖包中通常包含大量的小文件,同时依赖之间还存在复杂的关联,项目node_modules文件夹通常都包含上万个文件,严重限制了模块安装速度,导致在lock和cache都存在的情况也要消耗大量的时间在解压以及小文件I/O上。
2、项目模块空间没有共享:npm为每一个项目创建一个node_modu les目录,无法共用存储空间,产生了硬盘空间的巨额损耗。
3、污染全局存储:为了解决上述的问题,pnpm提出了硬链接+软链接的方式解决模块管理问题。但是,pnpm项目的node_modu les无法独立,对系统某一个项目内的模块进行调试会污染全局存储。
鉴于此,有必要提出一种基于用户态文件系统的前端模块管理方法,解决市面现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,无法满足如今前端敏捷开发过程中衍生的模块效能的需求。
发明内容
本发明的目的是提供一种基于用户态文件系统的前端模块管理器、管理方法及系统,解决市面现有前端模块管理器存在安装速度慢、占用硬盘空间大的问题,无法满足如今前端敏捷开发过程中衍生的模块效能需求,基于COW(copy on wr ite)技术实现顶层目录镜像层来实现项目的模块隔离,以及使用进程索引的多项目模块管理守护进程,由守护进程生成虚拟化模块目录,绕过模块解压时的大量io时间。并且通过挂载上层可写底层只读的镜像目录,解决业务项目研发中对模块目录的修改污染底层存储的问题。与此同时,根据上层fs进程索引在内存中建立依赖图,支持不同业务项目同时运行。本实施例中每个项目包含多个模块,每个模块内包括多个子文件。
本发明的目的是提供一种基于用户态文件系统的前端模块管理器,包括:
外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
应用隔离单元,用于接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程I D,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
底层守护进程单元,用于接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;跳过现有技术安装模块时下载模块,解压过程中IO的处理时间,跳过多个子文件的复制过程。
其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
作为优选地,还包括全局存储单元,用于向各单元提供共享底层存储空间,通过所述应用隔离单元根据所述预设模块的模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。
作为优选地,所述应用隔离单元为联合文件系统,所述联合文件系统包括合并生成的node_modules虚拟层,所述node_modules虚拟层包括上层及底层在当前节点发出读取目标文件的指令时,,若目标文件存在于上层,则直接读取所述目标文件;若目标文件不存在于上层,则从底层读取所述目标文件;若对所述目标文件进行修改或删除操作时,则基于写时复制机制将虚拟层对底层中的所述目标文件进行复制并传送至上层中得到文件副本,当文件副本产生修改变化时,基于写时复制机制对所述文件副本进行修改;其中,上层为项目独立层Upper Dir,底层为镜像层Lower Dir。
作为优选地,所述应用隔离单元设置为上层的联合文件系统来隔离模块文件,所述联合文件系统将业务独立的顶层可写的项目独立层和底层的全局存储只读层合并为node_modules目录,用户程序在项目node_modules写入修改的时候,基于写时复制技术保存在项目独立层,保持全局存储只读层只读。
作为优选地,所述虚拟化模块目录下的模块文件内容根据文件大小、偏移量数据直接从tar归档包读取返回。
作为优选地,所述底层守护进程单元包括FUSE内核模块和用户态LibFUSE库,其中,所述FUSE内核模块用于与VFS文件系统接口建立连接,接收VFS发出的请求,通过连接控件建立管道并将封装后的请求发送至用户态;所述用户态LibFUSE库用于解析FUSE数据包协议的库代码,在用户态执行相应的请求操作输出结果,并返回到内核态;在工作状态下,接收目标文件读取指令,接收VFS请求传递给对象存储LibFUSE,通过LibFUSE传递给fuse守护进程,根据所述依赖结构识别到读取的目标文件,定位所述目标文件的真实位置并进行全局文件的存储。
本发明的目的是提供一种基于用户态文件系统的前端模块管理方法,包括:
初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;
其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
本发明的目的是提供一种基于用户态文件系统的前端模块管理系统,包括:
服务器以及接入所述服务器的多个客户端;
每个所述客户端上运行有如本发明实施例所述的基于用户态文件系统的前端模块管理器;
所述服务器上运行有模块库。
本发明的目的是提供一种电子设备,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如本发明实施例所述的基于用户态文件系统的前端模块管理方法。
本发明的目的是提供一种可读存储介质,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如本发明实施例所述的基于用户态文件系统的前端模块管理方法。
针对现有技术,本发明具有如下的有益效果:
1、无需解压小文件:本方案基于FUSE设计,直接生成node_modules虚拟镜像目录,只需将原始tgz格式解压到tar归档包即可,再根据解析的node_modules结构将文件入口直接映射到归档包内(根据文件偏移量和大小),节省大量小文件写入时间。
2、硬盘空间共享:本方案可以共享底层存储,文件系统可以根据模块名和版本号索引指归档文件包处,再返回给不同的业务项目使用。
3、上层业务隔离:本发明通过上层的联合文件系统来隔离模块文件,联合文件系统将业务独立的顶层可写层和底层的全局存储只读层合并为node_modules目录。用户程序在项目node_modules写入修改的时候,保存在顶层独立层(copy on write技术),保持底层只读。
4、支持FUSE守护进程生成虚拟node_modules目录;支持项目模块的隔离,弥补pnpm的不足;支持多项目同时使用,也就是说要同时支持多个node_modules目录。
附图说明
图1为本发明一实施例中基于用户态文件系统的前端模块管理器的架构图;
图2为本发明一实施例中FUSE示例图;
图3为本发明一实施例联合文件系统示例图;
图4为本发明一实施例中方案时序图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一种实施例”表示“至少一种实施例”;术语“另一实施例”表示“至少一种另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本申请公开中提及的“一次”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本申请公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
参见图1所示,本发明提供了一种基于用户态文件系统的前端模块管理器,包括:外层控制单元、应用隔离单元、底层守护进程单元和全局存储单元。可以理解为本实例采用的模块管理由上到下层级设置为外层控制程序,应用隔离层-un ionFS,底层守护进程FUSE和模块全局储存。基于COW(copy on write)技术实现顶层目录镜像层来实现项目的模块隔离,以及使用进程索引的多项目模块管理守护进程。该管理器由守护进程生成虚拟化模块目录,绕过模块解压时的大量io时间。并且通过挂载上层可写底层只读的镜像目录,解决业务项目研发中对模块目录的修改污染底层存储的问题。与此同时,根据上层fs进程索引在内存中建立依赖图,支持不同业务项目同时运行。
具体来讲,本实施例采用的外层控制单元,用于初始化所述应用隔离单元和所述底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;及本实施例中外部控制单元可以是外层控制程序;
应用隔离单元,用于接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;本实施例所述隔离层可以是应用隔离层-unionFS。参见图3所示,本实施例中采用的联合文件系统(Union File System):可以将多个目录/分支内容联合挂载到同一个目录下,而目录的物理位置是分开的。UnionFS允许只读和可读写目录并存,就是说可同时删除和增加内容。UnionFS应用的地方很多,比如在多个磁盘分区上合并不同文件系统的主目录。另外UnionFS具有写时复制(copy-on-write)功能UnionFS可以把只读和可读写文件系统合并在一起,虚拟上允许只读文件系统的修改可以保存到可写文件系统当中。
底层守护进程单元,用于接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;本实施例可以是底层守护进程FUSE。基于FUSE设计,直接生成node_modules虚拟镜像目录,只需将原始tgz格式解压到tar归档包即可,再根据解析的node_modules结构将文件入口直接映射到归档包内,即根据文件偏移量和大小,节省大量小文件写入时间。可以共享底层存储,文件系统可以根据模块名和版本号索引指归档文件包处,再返回给不同的业务项目使用。支持FUSE守护进程生成虚拟node_modules目录,支持项目模块的隔离,弥补pnpm的不足,支持多项目同时使用,也就是说要同时支持多个node_modules目录。
全局存储单元,用于向各单元提供共享底层存储空间,通过所述应用隔离单元根据模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。本实施例中可以是模块全局储存。
其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成,配置为上层可写模式和底层只读模式。
一种实施例中,本实施生成的虚拟化模块目录即虚拟node_modules目录或简称为虚拟目录,在不考虑自行处理lock文件生成的情况下,我们可以用npm提供的解析库@npmcli/arborist将lock文件处理成依赖树,然后提取出我们需要的内容。在这种场景下,我们提取出模块tgz文件下载路径之后,处理下载、解压的逻辑,最后的储存形式是tar归档文件,然后把依赖树信息传递给守护进程进行分析。守护进程可以根据依赖结构生成相应的虚拟化模块目录,该目录下面的具体模块文件内容可以根据文件大小、偏移量数据直接从tar归档文件读取返回。单独处理@xxx格式的私有文件夹前缀,生成其下相应模块的虚拟目录。其余普通格式的模块直接在根node_modules底下生成目录。由于npm的扁平化方案依然存在不同版本的子依赖无法提升,需要由依赖本身维护在自己的node_modules底下,所以我们需要在依赖目录下确认是否需要维护下一级node_modules。.bin目录需要根据依赖package.json内的bin段确认,并且生成对应的软链接文件。
一种实施例中,所述应用隔离单元设置为上层的联合文件系统来隔离模块文件,所述联合文件系统将业务独立的顶层可写的项目独立层和底层的全局存储只读层合并为node_modules目录,用户程序在项目node_modules写入修改的时候,基于写时复制技术保存在顶层独立层,保持底层只读。为每个项目的node_modules挂载一层单独的叠加镜像,由上层的项目独立并且可写入的所述的虚拟node_modules目录即顶层目录和底层守护进程单元即底层FUSE实现的只可读的原始node_modules目录合并而成。在某程序进行node_modules的写入时,UnionFS会将改动复制到上层文件夹中,不会影响底层目录。这样不同的项目之间node_modules的修改就不会互相影响了。
一种实施例中,所述应用隔离单元为联合文件系统,所述联合文件系统包括合并生成的node_modules虚拟层,所述node_modules虚拟层包括上层及底层,在当前节点发出读取目标文件的指令时,若目标文件存在于上层,则直接读取所述目标文件;若目标文件不存在于上层,则从底层读取所述目标文件;若对所述目标文件进行修改或删除操作时,则基于写时复制机制将虚拟层对底层中的所述目标文件进行复制并传送至上层中得到文件副本,当文件副本产生修改变化时,基于写时复制机制对所述文件副本进行修改。当用户想要往来自lower层的文件添加或修改内容时,overlayfs首先会的拷贝一份lower dir中的文件副本到upper dir中,后续的写入和修改操作将会在upper dir下的copy-up的副本文件中进行,lower dir原文件被隐藏。;
其中,上层为项目独立层Upper Dir,底层为镜像层Lower Dir。
一种实施例中,结合UnionFS来看,每个项目的UnionFS是独立的,而且其合并镜像层时自然需要请求底层的目录,这个request内是有进程信息的。也就是说我们可以使用UnionFS的进程信息来确认目录来源。换句话说,我们只需要为不同项目的依赖树增加进程信息作为索引,再提交给底层守护进程,底层守护进程就可以在接收到文件相关的request时,使用进程pid找到指定的依赖树,并生成虚拟目录。
一种实施例中,所述底层守护进程单元包括FUSE内核模块和用户态LibFUSE库,其中,所述FUSE内核模块用于与VFS文件系统接口建立连接,接收VFS发出的请求,通过连接控件建立管道并将封装后的请求发送至用户态;所述用户态LibFUSE库用于解析FUSE数据包协议的库代码,在用户态执行相应的请求操作输出结果,并返回到内核态;在工作状态下,接收目标文件读取指令,接收VFS请求传递给对象存储LibFUSE,通过LibFUSE传递给fuse守护进程,根据所述依赖结构识别到读取的目标文件,定位所述目标文件的真实位置并进行全局文件的存储。其中,LibFUSE实现文件系统主要框架、对实现的文件系统操作进行封装、mount管理、通过设备/dev/fuse与内核模块通信。FUSE内核模块实现VFS接口,即fuse文件驱动注册、supper block、dentry、inode的维护,接收请求传递给LibFUSE,LibFUSE再传递给用户程序的接口进行操作;FUSE需要把VFS层的请求传到用户态的fuseapp,在用户态处理,然后再返回到内核态,把结果返回给VFS层。本实施例采用的底层守护进程FUSE,当用户自定义一个新的用户态文件系统被挂载之后,我们在访问该文件系统的文件的方式与访问其他文件系统的文件是一样的,VFS保证了这一点。不同的是,FUSE文件系统下面的访问行为是可以用户自定义的。参见图2所示,FUSE工作的流程如下:
以open为例,整个调用的过程如下:
1、用户态app调用glibc open接口,触发sys_open系统调用。
2、sys_open调用fuse中inode节点定义的open方法。
3、inode中open生成一个request消息,并通过/dev/fuse发送request消息到用户态libfuse。
4、Libfuse调用fuse_application用户自定义的open的方法,并将返回值通过/dev/fuse通知给内核。
5、内核收到request消息的处理完成的唤醒,并将结果放回给VFS系统调用结果。
6、用户态app收到open的返回结果。可以理解为,libfuse是永恒态封装用来解析FUSE数据包协议的库代码,服务与所有的用户态文件系统;/dev/fuse用来连接内核fuse和用户态文件系统;fusermount是用户态文件系统用来挂载的工具。本实施例采用的FUSE框架可以上述部分。
本实施例采用的UnionFS的核心就是高效的利用磁盘空间,docker中使用到了UnionFS,任何程序运行时都会有依赖,无论是开发语言层的依赖库,还是各种系统lib、操作系统等,不同的系统上这些库可能是不一样的,或者有缺失的。为了让容器运行时一致,docker将依赖的操作系统、各种lib依赖整合打包在一起,即镜像,然后容器启动时,作为它的根目录即根文件系统rootfs,使得容器进程的各种依赖调用都在这个根目录里,这样就做到了环境的一致性。联合文件系统(UnionFS)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终结果。支持为每一个成员目录(类似Git的分支)设定只读(readonly)、读写(readwrite)和写出(whiteout-able)权限;文件系统分层,对readonly权限的分支可以逻辑上进行修改,增量地,不影响readonly部分的,通常UnionFS有两个用途,一方面可以将多个disk挂到同一个目录下,另一个更常用的就是将一个readonly的分支和一个writeable的分支联合在一起。联合文件系统是实现Docker镜像的技术基础。
参见图4所示,基于相同的构思,本实施例还提供了一种基于用户态文件系统的前端模块管理方法,包括:
S1:初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
S2:接收所述隔离层的创建操作指令执行所述隔离层的创建,输入对应的模块信息,返回所述隔离层进程ID;
S3:根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构并根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;
其中,所述虚拟化模块目录配置为上层可写模式和底层只读模式。
进一步,还包括:S4:向各单元提供共享底层存储空间,通过所述应用隔离单元根据模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。
基于相同的构思,本发明还提供了一种基于用户态文件系统的前端模块管理系统,包括:
服务器以及接入所述服务器的多个客户端;
每个所述客户端上运行有如本发明实施例所述的基于用户态文件系统的前端模块管理器;
所述服务器上运行有模块库。
在本申请的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的基于用户态文件系统的前端模块管理方法得以实现。
在本申请的一些实施例中,还提供了一种可读存储介质,该可读存储介质可以为非易失性可读存储介质,也可以为易失性可读存储介质。该可读存储介质中存储有指令,当该指令在计算机上运行时,使得包含该种可读存储介质的电子设备执行前述的基于用户态文件系统的前端模块管理方法。
可以理解的是,对于前述所提及的基于用户态文件系统的前端模块管理方法,如果均以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-only memory,ROM)、随机存取存储器(Randomaccess memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请所公开的技术方案所涉及的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于用户态文件系统的前端模块管理器,其特征在于,包括:
外层控制单元,用于初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
应用隔离单元,用于接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
底层守护进程单元,用于接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;
其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
2.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,还包括全局存储单元,用于向各单元提供共享底层存储空间,通过所述应用隔离单元根据所述预设模块的模块名和版本号索引至所述归档包处,再返回给不同的业务项目使用。
3.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述应用隔离单元为联合文件系统,所述联合文件系统包括合并生成的node_modules虚拟层,所述node_modules虚拟层包括上层及底层,在当前节点发出读取目标文件的指令时,若目标文件存在于上层,则直接读取所述目标文件;若目标文件不存在于上层,则从底层读取所述目标文件;若对所述目标文件进行修改或删除操作时,则基于写时复制机制将虚拟层对底层中的所述目标文件进行复制并传送至上层中得到文件副本,当文件副本产生修改变化时,基于写时复制机制对所述文件副本进行修改;
其中,上层为项目独立层Upper Dir,底层为镜像层Lower Dir。
4.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述应用隔离单元设置为上层的联合文件系统来隔离模块文件,所述联合文件系统将业务独立的顶层可写的项目独立层和底层的全局存储只读层合并为node_modules目录,用户程序在项目node_modules写入修改的时候,基于写时复制技术保存在项目独立层,保持全局存储只读层只读。
5.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述虚拟化模块目录下的模块文件内容根据文件大小、偏移量数据直接从tar归档包读取返回。
6.如权利要求1所述的基于用户态文件系统的前端模块管理器,其特征在于,所述底层守护进程单元包括FUSE内核模块和用户态LibFUSE库,其中,所述FUSE内核模块用于与VFS文件系统接口建立连接,接收VFS发出的请求,通过连接控件建立管道并将封装后的请求发送至用户态;所述用户态LibFUSE库用于解析FUSE数据包协议的库代码,在用户态执行相应的请求操作输出结果,并返回到内核态;在工作状态下,接收目标文件读取指令,接收VFS请求传递给对象存储LibFUSE,通过LibFUSE传递给fuse守护进程,根据所述依赖结构识别到读取的目标文件,定位所述目标文件的真实位置并进行全局文件的存储。
7.一种基于用户态文件系统的前端模块管理方法,其特征在于,包括:
初始化应用隔离单元和底层守护进程单元,获取每个项目下对应的预设模块信息,调用应用隔离单元创建项目中各模块间的隔离层的操作指令;
接收所述隔离层的创建操作指令执行所述隔离层的创建,生成所述隔离层的进程ID,且在用户执行写入操作时对底层存储进行隔离以防止污染底层存储;
接收所述预设模块信息,并根据所述隔离层进程ID生成虚拟化模块目录,即将原始的项目包解压至归档包,解析所述虚拟化模块目录得到依赖结构,根据所述依赖结构将目标文件入口直接映射至所述归档包内,以绕过各模块解压时的产生的IO时间的消耗,并且通过挂载所述虚拟化模块目录;
其中,所述虚拟化模块目录由所述应用隔离单元和所述底层守护进程单元合并生成。
8.一种基于用户态文件系统的前端模块管理系统,其特征在于,包括:
服务器以及接入所述服务器的多个客户端;
每个所述客户端上运行有如权利要求1-6任一项所述的基于用户态文件系统的前端模块管理器;
所述服务器上运行有模块库。
9.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求7所述的基于用户态文件系统的前端模块管理方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求7所述的基于用户态文件系统的前端模块管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310534683.8A CN116594978A (zh) | 2023-05-12 | 2023-05-12 | 基于用户态文件系统的前端模块管理器、管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310534683.8A CN116594978A (zh) | 2023-05-12 | 2023-05-12 | 基于用户态文件系统的前端模块管理器、管理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116594978A true CN116594978A (zh) | 2023-08-15 |
Family
ID=87594853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310534683.8A Pending CN116594978A (zh) | 2023-05-12 | 2023-05-12 | 基于用户态文件系统的前端模块管理器、管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594978A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519733A (zh) * | 2023-11-16 | 2024-02-06 | 之江实验室 | 一种项目部署方法、装置、存储介质及电子设备 |
-
2023
- 2023-05-12 CN CN202310534683.8A patent/CN116594978A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519733A (zh) * | 2023-11-16 | 2024-02-06 | 之江实验室 | 一种项目部署方法、装置、存储介质及电子设备 |
CN117519733B (zh) * | 2023-11-16 | 2024-05-28 | 之江实验室 | 一种项目部署方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10326769B2 (en) | Extensible multi-tenant cloud-management system and methods for extending functionalities and services provided by multi-tenant cloud-management system | |
US10445122B2 (en) | Effective and efficient virtual machine template management for cloud environments | |
Hendriks | BProc: The Beowulf distributed process space | |
US20160259811A1 (en) | Method and system for metadata synchronization | |
US8938550B2 (en) | Autonomous network streaming | |
Mundkur et al. | Disco: a computing platform for large-scale data analytics | |
JP2022076475A (ja) | コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開) | |
US11762851B2 (en) | Methods and systems that provide a general query interface to multiple management services and applications | |
US10872007B2 (en) | Methods and systems to compound alerts in a distributed computing system | |
CN116594978A (zh) | 基于用户态文件系统的前端模块管理器、管理方法及系统 | |
US10838872B2 (en) | System, method, and recording medium for common memory programming | |
US9229659B2 (en) | Identifying and accessing reference data in an in-memory data grid | |
US20060253858A1 (en) | Software service application and method of servicing a software application | |
El Kafrawy et al. | HDFSx: an enhanced model to handle small files in Hadoop with a simulating toolkit | |
US11907176B2 (en) | Container-based virtualization for testing database system | |
Shih | MASS HDFS: multi-agent spatial simulation hadoop distributed file system | |
US11966370B1 (en) | Pseudo-local multi-service enabled file systems using a locally-addressable secure compute layer | |
US11630804B1 (en) | Classifying and storing multiple layers of a file system | |
US11989094B2 (en) | Minimizing data transfer and storage utilization on cloud object storage systems | |
US11526286B1 (en) | Adaptive snapshot chunk sizing for snapshots of block storage volumes | |
US11263032B1 (en) | Systems and methods for emulating local storage | |
US11169728B2 (en) | Replication configuration for multiple heterogeneous data stores | |
US10592415B2 (en) | Modified consistency hashing rings for object store controlled WAN cache infrastructure | |
Rabinovici-Cohen et al. | Preservation DataStores in the Cloud (PDS Cloud): Long term digital preservation in the cloud | |
JP2023541367A (ja) | 単一のターゲットテーブルに対する、複数の行またはパーティションの効率的なバルクロード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |