一种基于云计算环境下打包文件的传输方法及系统与流程

文档序号:11843445阅读:201来源:国知局
一种基于云计算环境下打包文件的传输方法及系统与流程

本发明涉及数据传输技术领域,尤其涉及一种基于云计算环境下打包文件的传输方法及系统。



背景技术:

I/O密集型应用是云计算环境下最常用的应用之一,如何提高这种特定类型应用的处理效率一直很少有人关注。文件上传下载是一种典型的I/O密集型应用,海量小文件单独传输需要消耗大量的等待时间,而且每次传输都需要进行I/O操作,导致服务器数据中心的数据吞吐率和服务效率较低。传统的打包策略是全部打包策略,即当一个客户端请求上传或下载一个文件夹,就将文件夹整体打包为一个文件。该打包策略在文件夹中有不适合打包的文件时,会浪费了很多时间和资源来给不适合打包的文件进行压缩打包。



技术实现要素:

本发明提供了一种基于云计算环境下打包文件的传输方法及系统,该方法及系统可以缩短文件的传输时间,提升文件传输效率,同时也减少文件传输过程中的I/O操作。

为实现上述设计,本发明采用以下技术方案:

一方面,提供了一种基于云计算环境下打包文件的传输方法,包括:

接收传输文件夹的命令;

获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列;

将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。

其中,所述将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列之前,还包括:

将所述不适合打包的文件的文件名作为Key值,文件大小作为Value值放入降序树图中;

所述将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列,包括:

获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值;

将所述第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值对应的文件放入所述打包队列;

所述将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输,包括:

获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值;

将所述第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值对应的文件进行传输。

其中,所述将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输,包括:

将所述打包队列中的文件进行压缩,完成打包,形成打包文件;

给所述打包文件添加预置打包标记;

将添加有所述预置打包标记的打包文件进行传输。

其中,所述文件大小为磁盘推算出的文件大小、网络推算出的文件大小或中断推算出的文件大小。

其中,所述获取所述文件夹中所有文件的文件类型和文件大小,具体为:通过文件遍历算法获取所述文件夹中所有文件的文件类型和文件大小。

另一方面,提供了一种基于云计算环境下打包文件的传输系统,包括:

接收单元,接收传输文件夹的命令;

获取单元,获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列;

传输单元,将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。

其中,还包括:

放入单元,将所述不适合打包的文件的文件名作为Key值,文件大小作为Value值放入降序树图中;

所述将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列,包括:

获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值;

将所述第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值对应的文件放入所述打包队列;

所述将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输,包括:

获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值;

将所述第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值对应的文件进行传输。

其中,所述将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输,包括:

将所述打包队列中的文件进行压缩,完成打包,形成打包文件;

给所述打包文件添加预置打包标记;

将添加有所述预置打包标记的打包文件进行传输。

其中,所述文件大小为磁盘推算出的文件大小、网络推算出的文件大小或中断推算出的文件大小。

其中,所述获取所述文件夹中所有文件的文件类型和文件大小,具体为:通过文件遍历算法获取所述文件夹中所有文件的文件类型和文件大小。

本发明的有益效果为:本发明实施例通过接收传输文件夹的命令;获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列;将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。根据文件类型和文件大小将文件夹中适合打包的文件放入打包队列进行打包,同时将文件夹中剩余的文件即刻进行传输,打包队列打包完毕后再进行传输;大大缩短了整个文件夹的传输时间,提升了文件传输效率,同时也降低文件传输过程中的I/O操作,从而可以大大提升数据中心的数据吞吐率和服务效率,增加服务器的使用寿命。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的类型和这些附图获得其他的附图。

图1是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输方法的第一实施例的方法流程图。

图2是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输方法的第二实施例的方法流程图。

图3是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输系统的第一实施例的结构方框图。

图4是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输系统的第二实施例的结构方框图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本方案适用于两台服务器之间的文件传输或者服务器与客户端之间的文件传输。

请参考图1,其是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输方法的第一实施例的方法流程图。如图所示,该方法包括:

步骤S101:接收传输文件夹的命令。

服务器(或客户端)接收到另一台服务器/客户端发送过来的要求传输文件夹的命令。

步骤S102:获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列。

在使用打包策略以前,必须首先获取每一个文件的类型和大小;可选地,采用文件遍历算法获取需要传输的文件夹中所有文件的文件类型和文件大小。将适合打包的文件类型的文件放入打包队列,将不适合打包的文件类型的文件进行大小排序,小于文件阈值的文件也放入打包队列中。

可选地,获得文件夹中所有文件的文件类型和文件大小,每获得一个文件的文件类型和文件大小,就判断是否属于适合打包的文件类型,如果属于适合打包的文件类型,就将该文件放入打包队列;如果不属于适合打包的文件类型,就判断该文件的文件大小是否小于文件阈值,当该文件的文件大小小于文件阈值时,将该文件放入打包队列;接着再判断下一个文件,判断过程与上述过程相同,直到文件夹中所有的文件都判断完毕为止。

可选地,获得文件夹中所有文件的文件类型和文件大小,等文件夹中所有文件的文件类型和文件大小都获知了后,再统一进行是否放入打包队列的判断。首先,从这些文件中选出符合适合打包的文件类型的所有文件放入打包队列中;然后,从文件夹剩下的文件中选出文件大小小于文件阈值的所有文件放入打包队列中。

其中,适合打包的文件类型主要为文档类文件,如Word文档、文本文档、excel文档等;不适合打包的文件类型主要多媒体文件,如:视频文件、音频文件、MP3等。由于多媒体文件大多数都已经经过了成熟的高度压缩处理而生成了专门的格式,因此很难会有更好地压缩方式使其进一步压缩,甚至已经无法压缩,就目前的压缩技术来看,即使可以再进一步压缩,必定会以牺牲视频文件、音频文件的画质、音质为代价,因此多媒体文件是进一步压缩中,压缩比非常小的一类文件。对于压缩比大的文件,大多指的文本文件数据表格文件或者日志文件等,这些文件中存在大量重复的数据,同时文字信息比较多,压缩软件可以通过特定的算法,将这些重复的信息使用某一变量代替,从而尽可能减少文件的大小,在解压的时候,使用反替换就可以得到原来的文件。这样对于云计算服务器上海量的数据文件,例如客户端上传的日志文件,数据库文件,档案文件等,都可以采用打包压缩的方式进行预处理,对适合打包的小文件进行打包时,打包的时间、打包文件传输的时间及解包的时间三者的时间和会大大的小于小文件单独传输的时间和,从而减少传输时间。

可选地,文件大小为磁盘推算出的文件大小、网络推算出的文件大小或中断推算出的文件大小。

步骤S103:将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。

将文件夹中剩下的文件(即不适合打包的文件中文件大小大于等于文件阈值的文件)即刻进行传输,同时将将打包队列中的文件进行压缩打包,打包完毕后,将打包后形成的打包文件进行传输。其中,文件阈值可根据用户的需求、设备的性能及网络传输速度进行设定,通常情况下由大量的实验经验获得,可选地,文件阈值为3-5Kb。

当客户端与服务器进行I/O交互时,每当上传或者下载一个文件时,都要进行请求和响应。首先,发送端需要发送一个请求消息,通知接收端即将发送文件,请做好准备,如打开端口,用户密码认证等,因而每一次请求都需要消耗一定的时间(请求时间)。然后接收端向发送端发送一个响应消息,告诉发送端自己已经准备好,可以接受,这个过程也需要消耗一定的时间(响应时间)。之后双方建立连接,完成数据传输,这个时间是传输时间。通常,文件的总体传输时间与文件个数,文件的请求时间,文件的传输时间和文件的请求响应时间有关。由于离散的小文件是一个接一个的,因此,执行某一个文件的请求时,其他文件都处于闲置状态。同时,由于网络带宽等原因,文件传输等待的时间会比较长,因此大量的时间会被消耗在等待连接的响应上,而传输一个小文件本身所占用的时间并不长,因此传输效率会非常低下。而且,执行一次I/O操作必然导致系统中断产生,每次中断产生后都需要一定的中断响应时间。

综上所述,本发明实施例通过接收传输文件夹的命令;获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列;将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。根据文件类型和文件大小将文件夹中适合打包的文件放入打包队列进行打包,同时将文件夹中剩余的文件即刻进行传输,打包队列打包完毕后再进行传输;大大缩短了整个文件夹的传输时间,提升了文件传输效率,同时也降低文件传输过程中的I/O操作,从而可以大大提升数据中心的数据吞吐率和服务效率,增加服务器的使用寿命。

请参考图2,其是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输方法的第二实施例的方法流程图。如图所示,该方法包括:

步骤S201:接收传输文件夹的命令。

步骤S202:获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列;将所述不适合打包的文件的文件名作为Key值,文件大小作为Value值放入降序树图中,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列。

可选地,采用广度优先遍历算法和深度优先算法(Depth-First-Search,DFS算法)获取需要传输的文件夹中所有文件的文件类型和文件大小。优选地,采用单线程非递归的广度优先遍历算法来遍历文件夹中平行的子文件夹,采用单线程非递归的深度优先遍历算法来遍历文件夹中的每一个文件。

在文件夹中,整个文件夹相当于一个树的根节点,里面的子文件夹相当于一般节点,文件相当于叶子节点。使用深度优先算法可以完全遍历这个文件夹,即从根节点开始遍历,最终可以到达每一个文件。在深度优先算法中,通常会设置标记位来判断是否访问过。对于新发现的节点v,如果有以此节点为起点而未探测过的边,就沿此边继续搜索下去。当节点v的所有边都已经被搜索过,搜索将回溯到发现该节点v的那条边的始节点。这一过程将会一直进行,直到发现从源节点出发,可以到达的所有节点为止。如果此时存在未被访问过的节点,则选择其中一个作为源节点并重复上述过程,整个过程反复进行,直到该图中所有可达的节点都被访问过为止。在使用DFS算法时,相对于树来说,节点v即下一个需要遍历的文件或者文件夹,当访问到文件时,保存该文件的路径和大小后即可立即返回到上一层,进行之后的遍历。

文件的遍历算法有很多,然而对于深度优先的搜索,递归过程会在调用之前进行,为某个目录分配的搜索资源要在这个目录所有子目录搜索完毕之后才能释放,而广度优先的搜索则是在本次搜索的之后才开始深入搜索,其耗费的系统资源要比深度优先搜索要少得多,因此采取广度优先遍历。其次递归算法可以简化算法的复杂度,但是会占用大量的栈空间,同时也会产生大量的函数调用代码,当文件夹规模很大的时候很容易引起“堆栈下溢”,因此采取非递归算法。另外,在操作I/O的时候,由于大部分I/O设备是不支持并行存取的,用多线程来进行文件搜索,反而会造成大量的互斥操作,反而影响了速度。

步骤S203:获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值,将所述第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值对应的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件,给所述打包文件添加预置打包标记,将添加有所述预置打包标记的打包文件进行传输。

将打包队列中的文件压缩打包完毕后,给形成的打包文件添加预置打包标记,然后进行传输。当接收端收到的文件时,如果带有预置打包标记,则解包处理后保存;如果没有预置打包标记,则表明文件没有被压缩打包,只需要按原文件保存即可。

在遍历完整个文件夹后,每一个文件的信息都被保存起来,这里定义了一个降序树图(即TreeMap)用于保存文件信息。在TreeMap中可以通过一个对象来对另一个对象进行索引,用来索引的对象叫做key,被索引的对象叫做value。这里每个文件有两个信息,一个是文件名的完整名称,另一个就是该文件的大小。通过文件的完成名称,可以获取该文件的后缀。通过分析后缀可以判断文件的类型。文件类型对于判断文件是否应该打包十分重要。TreeMap运用到了排序树的思想,将数据按照有序的顺序进行保存。先定义一个打包队列(Package Queue),初始状态置为空,对于将要打包的文件,统一放入打包队列(Package Queue)里。在文件遍历算法结束以后,Package Queue中保存的文件会被统一进行打包,打包完毕后会置一个特殊标记符,从而区分这个打包文件和一般压缩文件。

综上所述,本发明实施例采用广度优先遍历算法和深度优先算法来遍历需要传输的文件夹中的所有文件,获取需要传输的文件夹中所有文件的文件类型和文件大小,将所有的文件类型和文件大小放入降序树图中,先通过文件类型找出适合打包的文件放入打包队列,再通过文件大小找出适合打包的文件放入打包队列,然后在打包队列的文件进行打包的同时将文件夹中剩余的文件即刻进行传输,打包队列打包完毕后再进行传输,提高文件传输的效率,提高网络资源的使用效率,并减少文件传输过程中的IO操作,达到降低能耗、延长物理设备使用寿命的目的。

以下为本方案一种基于云计算环境下打包文件的传输系统的实施例,一种基于云计算环境下打包文件的传输系统的实施例基于一种基于云计算环境下打包文件的传输方法的实施例实现,在一种基于云计算环境下打包文件的传输系统的实施例中未尽的描述,请参考一种基于云计算环境下打包文件的传输方法的实施例。

请参考图3,其是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输系统的第一实施例的结构方框图。如图所示,该系统包括:

接收单元310,接收传输文件夹的命令。

获取单元320,获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列。

可选地,采用文件遍历算法获取需要传输的文件夹中所有文件的文件类型和文件大小。其中,适合打包的文件类型主要为文档类文件,如Word文档、文本文档、excel文档等;不适合打包的文件类型主要多媒体文件,如:视频文件、音频文件、MP3等。文件大小为磁盘推算出的文件大小、网络推算出的文件大小或中断推算出的文件大小。

传输单元330,将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。

综上所述,各单元模块协同工作,接收单元310,接收传输文件夹的命令;获取单元320,获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列;传输单元330,将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。根据文件类型和文件大小将文件夹中适合打包的文件放入打包队列进行打包,同时将文件夹中剩余的文件即刻进行传输,打包队列打包完毕后再进行传输;大大缩短了整个文件夹的传输时间,提升了文件传输效率,同时也降低文件传输过程中的I/O操作,从而可以大大提升数据中心的数据吞吐率和服务效率,增加服务器的使用寿命。

请参考图4,其是本发明具体实施方式中提供的一种基于云计算环境下打包文件的传输系统的第二实施例的结构方框图。如图所示,该系统包括:

接收单元310,接收传输文件夹的命令。

获取单元320,获取所述文件夹中所有文件的文件类型和文件大小;根据所述文件类型将所述所有文件分为适合打包的文件和不适合打包的文件;将所述适合打包的文件放入打包队列,将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列。

可选地,采用广度优先遍历算法和深度优先算法(Depth-First-Search,DFS算法)获取需要传输的文件夹中所有文件的文件类型和文件大小;其中,单线程非递归的广度优先遍历算法来遍历文件夹中平行的子文件夹,采用单线程非递归的深度优先遍历算法来遍历文件夹中的每一个文件。

传输单元330,将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输;将所述打包队列中的文件进行压缩打包,将打包后形成的打包文件进行传输。

所述将所述不适合打包的文件中文件大小小于文件阈值的文件放入所述打包队列,包括:获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值;将所述第一个小于所述文件阈值的Value值对应的Key值及所述Value值对应的Key值后面的所有Key值对应的文件放入所述打包队列。

放入单元340,将所述不适合打包的文件的文件名作为Key值,文件大小作为Value值放入降序树图中。

所述将所述不适合打包的文件中文件大小大于等于文件阈值的文件进行传输,包括:获取所述降序树图中第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值;将所述第一个小于所述文件阈值的Value值对应的Key值前面的所有Key值对应的文件进行传输。

综上所述,各单元模块协同工作,放入单元340,将所述不适合打包的文件的文件名作为Key值,文件大小作为Value值放入降序树图中。采用广度优先遍历算法和深度优先算法来遍历需要传输的文件夹中的所有文件,获取需要传输的文件夹中所有文件的文件类型和文件大小,将所有的文件类型和文件大小放入降序树图中,先通过文件类型找出适合打包的文件放入打包队列,再通过文件大小找出适合打包的文件放入打包队列,然后在打包队列的文件进行打包的同时将文件夹中剩余的文件即刻进行传输,打包队列打包完毕后再进行传输,提高文件传输的效率,提高网络资源的使用效率,并减少文件传输过程中的IO操作,达到降低能耗、延长物理设备使用寿命的目的。

以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1