本发明涉及web服务打包领域,具体涉及分布式文件系统下的多文件批量打包方法、存储介质。
背景技术:
随着互联网的发展,需要存储的文件量越来越大。目前大多企业的选择是将文件存储在分布式文件系统进行文件的读写,不少场景中用户需要对选中的文件进行批量打包下载。
现有技术的打包方式需要通过客户端自身的业务服务实现。具体的,在处理打包请求的时候,需要由其业务服务自身完成相关文件的下载、压缩、存储。这种方式的缺点是用户进行打包下载时和自身业务服务代码逻辑混合。具体体现在:大量的打包请求会造成客户端大量磁盘io,从而导致客户端服务性能的下降,并且长时间的打包操作也可能导致请求的超时。
因此,有必要提供一种有效针对多文件批量打包下载的服务,在不影响业务系统运行的同时为用户提供可靠的打包下载服务。
技术实现要素:
本发明所要解决的技术问题是:提供分布式文件系统下的多文件批量打包方法、存储介质,通过采用独立打包服务将打包过程与客户端自身业务逻辑解耦,以提升文件打包的可靠性和打包效率,且不对客户端服务性能造成影响。
为了解决上述技术问题,本发明采用的技术方案为:
分布式文件系统下的文件打包方法,包括:
客户端接收对应两个以上目标文件的打包请求后,生成对应的打包描述文件;
客户端发送所述打包描述文件至打包服务端;
打包服务端依据所述打包描述文件中的源文件路径向分布式文件系统获取所述两个以上目标文件;
打包服务端打包所述两个以上目标文件,生成对应的压缩包;
打包服务端上传所述压缩包至分布式文件系统,并回传所述压缩包对应分布式文件系统的下载地址至客户端。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上述分布式文件系统下的文件打包方法所包含的步骤。
本发明的有益效果在于:本申请提供一种全新的多文件打包下载交互模式,将多文件的下载业务从客户端业务服务上剥离出来,交由独立的打包服务端实现,能有效减少客户端业务服务的自身文件io操作,不对其业务服务性能产生影响,更好的专注自身业务逻辑处理;同时又能提高文件打包效率和打包可靠性。
附图说明
图1为本发明实施例分布式文件系统下的文件打包方法的流程示意图;
图2为本发明实施例一的分布式文件系统下的文件打包方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:将多文件的下载业务从客户端业务服务上剥离出来,交由独立的打包服务端实现,同时提高打包下载效率和打包可靠性。
请参照图1,本发明提供一种分布式文件系统下的文件打包方法,包括:
客户端接收对应两个以上目标文件的打包请求后,生成对应的打包描述文件;
客户端发送所述打包描述文件至打包服务端;
打包服务端依据所述打包描述文件中的源文件路径向分布式文件系统获取所述两个以上目标文件;
打包服务端打包所述两个以上目标文件,生成对应的压缩包;
打包服务端上传所述压缩包至分布式文件系统,并回传所述压缩包对应分布式文件系统的下载地址至客户端。
从上述描述可知,本发明的有益效果在于:提供一种全新的资源打包交互方式,通过设置独立打包服务,依据特定规则的打包描述文件进行交互,提供稳定可靠且高效的打包服务,且不对客户端的业务服务性能产生影响。
进一步的,所述打包描述文件包括各个目标文件对应的源文件路径和各个目标文件对应的目标文件路径;
所述打包服务端打包所述两个以上目标文件,生成对应的压缩包,具体为:
打包服务端依据所述目标文件路径将所获取的各个目标文件存储至一临时目录;
打包服务端打包所述一临时目录,生成对应的压缩包。
由上述描述可知,打包服务端将获取的目标文件统一存至临时目录,并对目录中的各个目标文件进行归类后再打包压缩,不仅方便对目标文件进行管理和操作;而且能使用户直接获取到对应请求中目标文件路径要求而有序性排列的所有目标文件。
进一步的,所述回传所述压缩包对应分布式文件系统的下载地址至客户端,具体为:
打包服务端生成所述压缩包对应的校验值;
打包服务端回传包括所述校验值、所述压缩包对应分布式文件系统的下载地址以及所述压缩包的大小的打包信息至客户端。
由上述描述可知,打包服务端还将对应压缩包生成校验值,为客户端下载文件后验证其完整性提供支持,更好的保证客户端能准确获取完整的目标文件。
进一步的,所述客户端发送所述打包描述文件至打包服务端;之后,还包括:
打包服务端依据所述打包描述文件生成一打包任务后,将其存储至数据库;
打包服务端生成与所述一打包任务对应的唯一标识符,并将所述唯一标识符返回给客户端;
客户端依据所述唯一标识符定时轮询打包服务端所述一打包任务的打包结果。
由上述描述可知,打包服务端将对应接收到的各个打包描述文件分别生成唯一标识符并返回给对应的客户端,方便客户端以唯一标识符为令牌定时向打包服务端寻求对应打包任务的打包结果,而无需时刻在线等待结果,造成资源浪费,甚至导致请求超时。
进一步的,所述打包服务端依据所述打包描述文件中的源文件路径向分布式文件系统获取所述两个以上目标文件,具体为:
当打包服务端依据预设周期轮询数据库是否存在可执行的打包任务时,获取所述一打包任务;
打包服务端解析所述一打包任务,获取各个目标文件对应的源文件路径;
打包服务端依据所述源文件路径构建目标文件列表;
打包服务端向分布式文件系统请求批量下载所述目标文件列表对应的所有目标文件;
打包服务端从分布式文件系统获取所述两个以上目标文件。
由上述描述可知,打包服务端将以生成打包任务的形式有序性地处理接收到的各个打包描述文件,确保高效执行打包请求。
进一步的,打包服务器通过后台启动的线程来顺序执行所述向分布式文件系统请求批量下载所述目标文件列表对应的所有目标文件的步骤,以及获取所述两个以上目标文件的步骤。
由上述描述可知,对应不同打包任务,可以通过在后台分别开启互不影响的不同线程执行,实现同时支持多个打包任务的执行,提高打包服务端的性能。
进一步的,在执行所述打包服务端依据所述打包描述文件中的源文件路径向分布式文件系统获取所述两个以上目标文件步骤的过程中,若其一源文件路径对应一文件夹,则递归下载所述一文件下的所有子文件。
由上述描述可知,能实现依据打包描述文件中记载的对应文件夹的源文件路径,自动完成其所有子文件的下载,更具实用性;同时用户操作更便捷、高效。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上述分布式文件系统下的文件打包方法所包含的步骤。
从上述描述可知,本发明的有益效果在于:对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程,并通过程序的执行实现以一种全新的多文件打包下载交互模式,将多文件的下载业务从客户端业务服务上剥离出来,交由独立的打包服务端实现,能有效减少客户端业务服务的自身文件io操作,不对其业务服务性能产生影响,更好的专注自身业务逻辑处理;同时又能提高文件打包效率和打包可靠性。
实施例一
请参照图2,本实施例提供分布式文件系统下的文件打包方法,包括:
s1:客户端接收对应两个以上目标文件的打包请求后,生成对应的打包描述文件。
客户端指的是任意可向打包服务端发送打包请求的设备。
具体的,包括:
1.1、用户在客户端勾选需要打包的多个零散文件信息后,生成一打包业务请求;
1.2、客户端接收到用户发起的打包业务请求后,结合自身业务需求罗列出对应当前打包请求所需要下载的目标文件信息列表(一般对应大量的零散文件或文件夹);最后根据客户端系统罗列的目标文件列表生成对应的打包描述文件。
所述打包描述文件为打包服务端可识别的文件格式,如json格式;所述打包描述文件中必定包含了各个目标文件对应的源文件路径和各个目标文件对应的目标文件路径。
优选的,所述打包描述文件中还包括压缩包类型和压缩包文件名,其中,所述压缩包为打包服务端从分布式文件系统获取请求对应的所有目标文件后打包得到的压缩包,而压缩包类型限定了该压缩包的类型,压缩包文件名限定了该压缩包的文件名。
所述打包描述文件的结构为:
s2:客户端发送所述打包描述文件至打包服务端。
区别于现有技术,本发明的客户端将依据打包请求生成特定规则的打包描述文件,并交付给打包服务端执行具体打包操作,而非直接向分布式文件系统发起打包请求。
客户端的业务服务只需根据需要进行批量打包的多个零散的目标文件信息生成打包描述文件并告知打包服务端即可开展打包操作,打包结束后将由打包服务端回传目标文件的压缩包的下载地址,客户端直接从分布式文件系统下载即可,彻底解放了客户端业务服务的打包任务,显著提高客户端业务服务性能。
s3:打包服务端依据所述打包描述文件中的源文件路径向分布式文件系统获取所述两个以上目标文件。
在一具体实施方式中,步骤s3具体包括:
3.1、打包服务端接收到的所述打包描述文件后,将首先对其文件结构的合法性进行校验,即校验接收到的打包描述文件是否符合既定的结构要求。具体将验证打包描述文件是否包含各个目标文件对应的源文件路径和各个目标文件对应的目标文件路径,以及压缩包类型和压缩包文件名等信息。若验证通过,继续执行后续步骤;若验证不通过,则返回相应提示至客户端。
3.2、打包服务端依据打包描述文件生成一打包任务,然后将该打包任务存储至数据库。
具体的,对应一个打包描述文件即视为一个打包任务。
3.3:打包服务端生成与所述一打包任务对应的唯一标识符,并将所述唯一标识符返回给客户端。
3.4、客户端依据所述唯一标识符定时轮询打包服务端所述一打包任务的打包结果。
打包服务端将为每个生成的打包任务赋予一个唯一对应的标识符,即uuid作为任务标识,并将其交由客户端,使得客户端能依据这个唯一标识符定时查询其对应的打包任务的打包结果,直至打包服务端返回打包成功的信息。由此,客户端便无需时刻在线等待打包服务端返回信息,从而造成资源浪费,甚至可能导致客户端发起的打包请求超时作废;同时,客户端又能依据唯一标识符快速且准确地获取所需响应。
3.5、当打包服务端依据预设周期轮询数据库是否存在可执行的打包任务时,将获取所述一打包任务;
3.6、打包服务端解析所述一打包任务,获取各个目标文件对应的源文件路径;
3.7、打包服务端依据所述源文件路径构建目标文件列表,也称为需要依赖的文件列表。该目标文件列表中记载的是所要下载的各个目标文件,以及各个目标文件对应的源文件路径(打包描述文件中有记载)。
3.8、打包服务端向分布式文件系统请求批量下载所述目标文件列表对应的所有目标文件。
3.9、打包服务端从分布式文件系统获取所述两个以上目标文件。
可选的,所述打包服务器可通过在后台启动线程对目标文件列表中的各个目标文件进行批量下载,获取所有目标文件;并且,对应一个打包任务开启一个对应线程进行处理,实现并行处理,显著提高打包服务性能。
优选的,在下载过程中,若目标文件列表中的源文件路径对应的是一个文件夹,则递归下载该文件下的所有子文件。
s4:打包服务端对所获取的对应一个打包任务的所有目标文件,生成对应的压缩包。
可选的,该步骤具体包括:
4.1、打包服务端依据所述目标文件路径将所获取的对应当前打包请求所获取的各个目标文件存储至一临时目录中;即依据用户请求所要求的排列顺序对所获取的目标文件进行归类排序,更方便用户查阅和管理。
4.2、打包服务端打包所述一临时目录,生成对应的压缩包。
s5:打包服务端上传所述压缩包至分布式文件系统,并回传所述压缩包对应分布式文件系统的下载地址至客户端。
具体的,该步骤将用户所需的所有目标文件压缩后发送至分布式文件系统,不仅实现了客户端直接与分布式文件系统交互而高效、准确地获取所需文件的压缩包,实现客户端与具体打包业务解耦,显著提高目标文件的获取效率;而且,还能支持对用户本次打包下载的目标文件进行分布式存储,在之后,用户能依据下载地址快速下载获取历史打包内容。
在一具体实施中,打包服务端回传给客户端的打包信息中还同时包含依据所述压缩包生成对应的校验值md5以及压缩包的大小。客户端可依据打包信息中的校验值对依据下载地址获取的压缩包的完整性进行校验。具体的校验过程包括:依据相同算法计算所获取的压缩包对应的校验值,然后将其与打包信息中的校验值进行比对,若一致,则所下载的压缩包完整且未经篡改。
实施例二
本实施例对应实施例一,提供一种分布式文件系统下的文件打包系统,包括客户端、打包服务端以及分布式文件系统。
所述客户端,具体用于:
1、接收到用户对应的打包业务请求;
2、结合自身业务需求罗列出当前用户请求所需要的文件列表(一般为大量的零散文件或文件夹);
3、根据系统罗列的文件列表生成打包服务可识别的资源打包描述文件,其中包含了压缩包类型、生成的文件名(即压缩包文件名)、源文件路径、目标文件路径;其中,所述资源打包描述文件为json格式的描述文件;
4、将打包描述文件发送给打包服务后获取打包服务返回的一个uuid;
5、客户端可轮询请求查询对应uuid的打包结果,直至打包服务返回打包成功信息。
6、客户端可根据返回的压缩包地址结合自身业务考虑如果将结果展示给用户。
所述打包服务端,具体用于:
1、接收到客户端发送的打包描述文件并校验其合法性;
2、生成打包任务并存储至数据库中,为任务赋予一个唯一的uuid作为任务标识并返回给客户端;
3、打包服务定时轮询访问数据库获取可执行的任务;
4、查询到可执行任务后,解析对应的打包描述文件构建出需要依赖的文件列表;
5、后台启动线程对依赖的文件进行批量下载,如遇到文件夹则递归下载其下的子文件,最终将所有依赖的文件存放在一个临时目录下;
6、将临时目录下的文件列表以描述文件中的要求(目标文件路径)进行按目录归类打入压缩包中,最终生成一个完整的压缩包;
7、计算压缩包对应的md5,将压缩包上传到分布式文件系统中。
8、返回给客户端打包信息,包括:压缩包地址、压缩包md5、压缩包大小。
本实施例能实现客户端剥离打包业务,减少业务系统自身文件io操作,专注自身业务逻辑处理的同时,保证文件打包的可靠性,提高文件打包效率。
实施例三
本实施例对应实施例一,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上述实施例一所述的分布式文件系统下的文件打包方法所包含的步骤。具体的步骤在此不进行复述,详细请参阅实施例一的记载。
其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
综上所述,本发明提供的布式文件系统下的文件打包方法、存储介质,将多文件的下载业务从客户端业务服务上剥离出来,交由独立的打包服务端实现,同时提高打包下载效率和打包可靠性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。