一种文件并行传输的方法及系统的制作方法
【专利摘要】一种文件并行传输的方法和系统,所述方法包括如下步骤:获取待传输的文件的长度并设置传输线程的数量;分割文件;创建传输线程;创建目标文件;执行所述传输线程以传输多个文件片段;在所有传输线程传输完各自对应的文件片段时,结束文件传输,关闭所述目标文件。本发明以提高数据交互的速度和数据分析结果的准确度,提升了用户体验,同时降低用户的使用成本。
【专利说明】一种文件并行传输的方法及系统
【技术领域】
[0001]本发明涉及云计算和数据统计【技术领域】,特别涉及一种文件并行传输的方法和文件并行传输的系统。
【背景技术】
[0002]在云计算和大数据统计过程中,对数据的交互传输速度有着很高的要求。但是目前的问题是数据的交互采用顺序传输,读取和发送使用同步进行的方式,从而占用了大量的时间,而统计则占用了较少的时间。这种情况就会导致在一个固定的时间内必须返回结果时,查找树又没有达到查找的最佳数据节点就返回了查找结果,可想而知返回的这种查找结果准确度不高。而且,传输数据的时间长会导致设备系统资源的利用效率低。
[0003]因此,有必要对数据交互的方式进行优化改善,以提高数据交互的速度和准确度。
【发明内容】
[0004]本发明鉴于上述情况而作出,其目的是提供一种文件并行传输的方法,该方法可以提高数据交互的速度和数据分析结果的准确度,提升了用户体验,同时降低用户的使用成本。
[0005]为实现上述目的,本发明的一个方面提供了一种文件并行传输的方法,包括如下步骤:获取待传输的文件的长度并设置传输线程的数量;分割文件;创建传输线程;创建目标文件;执行所述传输线程以传输多个文件片段;以及在所有传输线程传输完各自对应的文件片段时形成所述目标文件。
[0006]所述分割文件的步骤中,根据待传输文件的长度和设置的传输线程的数量将文件分割为多个文件片段,使得每个文件片段的长度小于预定数值;其中,采用Http协议的GET命令设置每个传输线程对应传输的文件片段。
[0007]所述创建传输线程的步骤还包括以下步骤:设置每个传输线程对应的文件片段的起始位置和结束位置并形成该文件片段的文件句柄;将每个传输线程对应的文件片段的文件句柄发送到接收端。
[0008]其中,所述创建目标文件的步骤是在文件传输的目标位置创建目标文件,该目标文件是空文件,用于存储多个传输线程所传输的文件片段。
[0009]所述执行所述传输线程的步骤进一步包括以下步骤:在传输对应的文件片段过程中,实时记录当前传输数据在所述文件中的数据位置;以及如果存在传输线程出错,则创建一个新的传输线程或者由其他线程根据出错线程记录的当前传输数据在所述文件中的数据位置进行断点续传。
[0010]根据本发明的另一方面,提供了一种文件并行传输的系统,包括:线程设置模块,用于获取待传输的文件的长度并设置传输线程的数量;文件分割模块,连接至所述线程设置模块,用于分割文件;线程创建模块,连接至所述文件分割模块,用于创建所述传输线程和目标文件;线程执行模块,连接至所述线程创建模块,用于执行所述传输线程以传输多个文件片段;以及文件处理模块,用于在所有传输线程传输完各自对应的文件片段时形成所述目标文件。
[0011]根据本发明的系统,可以提高数据交互的速度和数据分析结果的准确度,提升了用户体验,同时降低用户的使用成本。
[0012]优选的,所述文件分割模块根据待传输文件的长度和设置的传输线程的数量将文件分割为多个文件片段,使得每个文件片段的长度小于预定数值。
[0013]优选的,所述线程创建模块采用Http协议的GET命令设置每个传输线程对应传输的文件片段,并在创建所述多个传输线程之后进一步执行下述操作:设置每个传输线程对应的文件片段的起始位置和结束位置并形成该文件片段的文件句柄;以及将每个传输线程对应的文件片段的文件句柄发送到接收端。
[0014]优选的,所述线程执行模块还执行下述操作:在每个传输线程的执行过程中,实时记录当前传输数据在所述文件中的数据位置;和如果某个传输线程出错,则创建一个新的传输线程或者由其他线程根据出错线程记录的当前传输数据在所述文件中的数据位置进行断点续传。
[0015]优选的,所述文件处理模块在文件传输的目标位置创建目标文件,该目标文件是空文件,用于存储多个传输线程所传输的文件片段。
[0016]根据本发明提供的文件并行传输的方法,可以对数据交互进行优化改善,将数据的完整性进行拆分传输。即,使用多个传输线程对数据进行分割和断点续传,将对一个文件的顺序传输模拟成多个文件的同时传输的方式来实现,从而达到加速数据交互的目的。本发明通过续点连传的方式进行数据交互,提高数据交互的速度,留出更多时间用于数据分析。
[0017]根据本发明的方法,每个传输线程在传输对应的文件片段过程中,实时记录当前传输数据在所述文件中的数据位置,并且在有所述传输线程出错时,创建一个新的传输线程或者由其他线程根据出错线程记录的当前传输数据在所述文件中的数据位置进行断点续传。
[0018]本发明提供的文件并行传输的系统对数据交互进行优化改善,将数据的完整性进行拆分传输。即,使用多个传输线程对数据进行分割和断点续传,将对一个文件的顺序传输模拟成多个文件的同时传输的方式来实现,从而达到加速数据交互的目的。本发明通过续点连传的方式进行数据交互,提高数据交互的速度,留出更多时间用于数据分析。
【专利附图】
【附图说明】
[0019]图1是根据本发明实施方式的文件并行传输的方法的流程图;
[0020]图2示意性地示出文件分割示意图;
[0021]图3是根据本发明实施方式的文件并行传输的系统的结构图。
【具体实施方式】
[0022]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0023]云计算和大数据统计过程中,目前存在交互传输与统计分析时间分配不均衡的问题。在数据的整个传输及分析过程中,交换数据占用了较多的时间,而留给分析的时间较少,从而导致传输效率低,并且分析结果没有时间达到最优,影响了分析结果的准确度。为此,本发明提出了一种文件并行传输的方法,缩短了数据的交互传输时间,从而可以留出更多时间用于数据分析。
[0024]图1是根据本发明实施方式的文件并行传输的方法的流程图。
[0025]如图1所示,本发明优选实施方式的文件并行传输的方法包括如下步骤:
[0026]步骤SI,获取待传输的文件的长度并设置传输线程的数量。
[0027]首先获取待传输的文件的长度,同时设置该文件传输线程的数量,也即将该文件设置为通过多个线程进行并行传输。通过一个文件拆分为多个线程并行传输,可以显著提高文件传输的速度。
[0028]在本发明的实施方式中,优选的采用Http (Hypertext transfer protocol,超文本转移协议)协议的HEAD命令获取待传输的文件的长度。
[0029]步骤S2,分割文件。
[0030]本步骤中,根据待传输文件的长度和设置的传输线程的数量,将文件分割为多个文件片段,每个文件片段的长度均小于预定数值。
[0031]在本发明的实施方式中,可以采用等分或不等分的方式将文件分割为多个文件片段。优选的,分割后的文件片段的长度不超过100字节,但本发明不限制于此。
[0032]例如,待传输文件的长度为L,传输线程的数量为η。本步骤中,采用等分的方式,可以将文件分割为η个文件片段,每个文件片段的长度为L/n。当然,也可以采用不等分的方式,随机将文件长度L划分η份。
[0033]步骤S3,创建传输线程。
[0034]本步骤中,基于设置好的传输线程的数量以及分割好的文件片段创建多个传输线程,将多个文件片段分配至多个传输线程,使得每个传输线程对应一个需要传输的文件片段。所创建的每个传输线程发送与该传输线程对应的文件片段的文件句柄,使得该传输线程可以执行对应文件片段的传输。
[0035]在本发明的实施方式中,采用Http协议的GET命令设置每个传输线程对应传输的文件片段。其中,每个文件片段包括数据在文件中的起始位置和结束位置[From,to]。具体来说,设置每个传输线程对应的传输范围的起始位置(From)和结束位置(To),即设置每个传输线程从文件中哪一个位置开始传输,以及传输到文件中的哪一个位置结束。
[0036]如图2所示,文件的长度为L,传输线程的数量为6。第一传输线程的文件片段为[S0, SI],第二传输线程的文件片段为[SI,S2],第三传输线程的文件片段为[S2,S3],第四传输线程的文件片段为[S3,S4],第五传输线程的文件片段为[S4,S5],第六传输线程的文件片段为[S5, S6]。
[0037]步骤S4,创建目标文件。
[0038]本步骤在文件传输的目标位置创建目标文件,例如如果将源文件从A设备传输到B设备,则本步骤在作为传输目标位置的B设备处创建目标文件。该目标文件是空文件,用于存储多个传输线程所下载(传输)过来的文件片段。本步骤中,不需要预先生成与待传输文件同样大小的空文件,每个线程只需要传输其打开的文件句柄即可。
[0039]步骤S5,执行传输线程以传输多个文件片段。
[0040]本步骤中,同时并行执行每个传输线程,以将每个传输线程对应的文件片段传输到目标文件保存。
[0041]创建传输线程之后,每个传输线程从文件中下载与其对应文件片段,将文件片段传输到目标位置的目标文件保存到相应位置。需要说明的是,这个过程中不需要对文件加锁,因为操作系统层级本身对文件的I/o是带锁的。
[0042]进一步,每个传输线程负责下载和写入一个文件片段,每个线程都记录当前已经下载到的位置,这样如果有某个线程出错了,可以从断点处继续下载,即每个传输线程可以断点续传。
[0043]在本发明的实施方式中,每个传输线程在传输对应的文件片段过程中,实时记录当前传输数据在文件中的数据位置。如果某个传输线程出错,则可以创建一个新的线程,或者由其他线程根据出错线程记录的当前传输数据在文件中的数据位置进行断点续传。
[0044]步骤S6,形成目标文件。
[0045]在所有传输线程传输完各自对应的文件片段时,结束文件传输的各个线程,将各个线程传输的文件片段填充到先前创建的目标文件中,按照文件片段在文件中的起始位置和结束位置[From,to]进行数据重组,从而确保形成目标文件,形成目标文件与传输的源文件一致。
[0046]本发明实施方式提供的数据交换传输的方法,对数据交互进行优化改善,将数据的完整性进行拆分传输。即,使用多个传输线程对数据进行分割和断点续传,将对一个文件的顺序传输模拟成多个文件的同时传输的方式来实现,从而达到加速数据交互的目的。本发明通过续点连传的方式进行数据交互,提高数据交互的速度,留出更多时间用于数据分析。例如:一个100G的数据,如果能提高10的传输时间,就可以将时间交给更多的分析计算使用,从而可以提高数据的统计分析效率和准确度。例如最新的语音搜索系统,在用户量小的时候,就会比用户量大的时候回复的信息更加准确,从而可以提高数据分析结果的准确度,提升了用户体验,同时降低用户的使用成本。
[0047]图3是根据本发明实施方式的文件并行传输的系统的结构图。
[0048]如图3所示,根据本发明实施方式的文件并行传输的系统包括:线程设置模块1、文件分割模块2、线程创建模块3、线程执行模块4和文件处理模块5。
[0049]具体来说,线程设置模块I用于获取待传输的文件的长度并设置该文件传输线程的数量,也即将该文件设置为通过多个线程进行并行传输。通过一个文件拆分为多个线程并行传输,可以显著提高文件传输的速度。
[0050]在本发明的实施方式中,线程设置模块I优选的采用Http协议的HEAD命令获取待传输的文件的长度。
[0051]文件分割模块2连接至线程设置模块1,用于根据待传输文件的长度和设置的传输线程的数量,将文件分割为多个文件片段,每个文件片段的长度均小于预定数值。
[0052]在本发明的实施方式中,文件分割模块2可以采用等分或不等分的方式将文件分割为多个文件片段。
[0053]例如,待传输文件的长度为L,传输线程的数量为η。文件分割模块2采用等分的方式,可以将文件分割为η个文件片段,每个文件片段的长度为L/n。当然,也可以采用不等分的方式,随机将文件长度L划分η份。线程创建模块3基于线程设置模块I设置好的传输线程的数量以及文件分割模块2分割好的文件片段创建多个传输线程,将多个文件片段分配至多个传输线程,使得每个传输线程对应一个需要传输的文件片段。在创建传输线程之后,所创建的每个传输线程发送与该传输线程对应的文件片段的文件句柄,使得该传输线程可以执行对应文件片段的传输。
[0054]在本发明的实施方式中,线程创建模块3采用Http协议的GET命令设置每个传输线程对应传输的文件片段。其中,每个文件片段包括数据在文件中的起始位置和结束位置。具体来说,线程创建模块3设置每个传输线程对应的传输范围的起始位置(From)和结束位置(To),即设置每个传输线程从文件中哪一个位置开始传输,以及传输到文件中的哪一个位置结束。
[0055]线程创建模块3还用于在文件传输的目标位置创建目标文件,例如如果将源文件从A设备传输到B设备,则线程创建模块3在作为传输目标位置的B设备处创建目标文件。该目标文件是空文件,用于存储多个传输线程所下载(传输)过来的文件片段。线程创建模块3不需要预先生成与待传输文件同样大小的空文件,每个线程只需要传输其打开的文件句柄即可。
[0056]线程执行模块4执行传输线程以传输多个文件片段。具体来说,线程执行模块4同时并行执行每个传输线程,以将每个传输线程对应的文件片段传输到目标文件保存。
[0057]创建传输线程之后,每个传输线程从文件中下载与其对应文件片段,将文件片段传输到目标位置的目标文件保存到相应位置。需要说明的是,这个过程中不需要对文件加锁,因为操作系统层级本身对文件的I/O是带锁的。
[0058]进一步,每个传输线程负责下载和写入一个文件片段,每个线程都记录当前已经下载到的位置,这样如果有某个线程出错了,可以从断电处继续下载,即每个传输线程可以断点续传。
[0059]在本发明的实施方式中,每个传输线程在传输对应的文件片段过程中,实时记录当前传输数据在文件中的数据位置。如果某个传输线程出错,则可以创建一个新的线程,或者由其他线程根据出错线程记录的当前传输数据在文件中的数据位置进行断点续传。
[0060]文件处理模块5用于形成目标文件。具体来说,文件处理模块5在所有传输线程传输完各自对应的文件片段时,将各个线程传输的文件片段填充到先前创建的目标文件中,按照文件片段在文件中的起始位置和结束位置[From,to]进行数据重组,从而确保形成目标文件,形成目标文件与传输的源文件一致。
[0061]根据本发明实施方式的文件并行传输的系统,对数据交互进行优化改善,将数据的完整性进行拆分传输。即,使用多个传输线程对数据进行分割和断点续传,将对一个文件的顺序传输模拟成多个文件的同时传输的方式来实现,从而达到加速数据交互的目的。本发明通过续点连传的方式进行数据交互,提高数据交互的速度,留出更多时间用于数据分析。例如:一个100G的数据,如果能提高10的传输时间,就可以将时间交给更多的分析计算使用,从而可以提高数据的统计分析效率和准确度。例如最新的语音搜索系统,在用户量小的时候,就会比用户量大的时候回复的信息更加准确,从而可以提高数据分析结果的准确度,提升了用户体验,同时降低用户的使用成本。[0062]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【权利要求】
1.一种文件并行传输的方法,包括如下步骤: 获取待传输的文件的长度并设置传输线程的数量; 分割文件; 创建传输线程; 创建目标文件; 执行所述传输线程以传输多个文件片段;以及 在所有传输线程传输完各自对应的文件片段时形成所述目标文件。
2.根据权利要求1所述的文件并行传输的方法,所述分割文件的步骤中,根据待传输文件的长度和设置的传输线程的数量将文件分割为多个文件片段,使得每个文件片段的长度小于预定数值;其中,采用Http协议的GET命令设置每个传输线程对应传输的文件片段。
3.根据权利要求1所述的文件并行传输的方法,其特征在于,所述创建传输线程的步骤还包括以下步骤: 设置每个传输线程对应的文件片段的起始位置和结束位置并形成该文件片段的文件句柄; 将每个传输线程对应的文件片段的文件句柄发送到接收端。
4.根据权利要求1所述的文件并行传输的方法,所述创建目标文件的步骤是在文件传输的目标位置创建目标文件,该目标文件是空文件,用于存储多个传输线程所传输的文件片段。
5.根据权利要求1-4中任一项所述的文件并行传输的方法,所述执行所述传输线程的步骤进一步包括以下步骤: 在传输对应的文件片段过程中,实时记录当前传输数据在所述文件中的数据位置;以及 如果存在传输线程出错,则创建一个新的传输线程或者由其他线程根据出错线程记录的当前传输数据在所述文件中的数据位置进行断点续传。
6.一种文件并行传输的系统,包括: 线程设置模块,用于获取待传输的文件的长度并设置传输线程的数量; 文件分割模块,连接至所述线程设置模块,用于分割文件; 线程创建模块,连接至所述文件分割模块,用于创建所述传输线程和目标文件; 线程执行模块,连接至所述线程创建模块,用于执行所述传输线程以传输多个文件片段;以及 文件处理模块,用于在所有传输线程传输完各自对应的文件片段时形成所述目标文件。
7.根据权利要求6所述的文件并行传输的系统,其特征在于,所述文件分割模块根据待传输文件的长度和设置的传输线程的数量将文件分割为多个文件片段,使得每个文件片段的长度小于预定数值。
8.根据权利要求6所述的文件并行传输的系统,其特征在于,所述线程创建模块采用Http协议的GET命令设置每个传输线程对应传输的文件片段,并在创建所述多个传输线程之后进一步执行下述操作: 设置每个传输线程对应的文件片段的起始位置和结束位置并形成该文件片段的文件句柄;以及 将每个传输线程对应的文件片段的文件句柄发送到接收端。
9.根据权利要求6所述的文件并行传输的系统,所述线程执行模块还执行下述操作: 在每个传输线程的执行过程中,实时记录当前传输数据在所述文件中的数据位置;和 如果某个传输线程出错,则创建一个新的传输线程或者由其他线程根据出错线程记录的当前传输数据在所述文件中的数据位置进行断点续传。
10.根据权利要求6所述的文件并行传输的系统,所述文件处理模块在文件传输的目标位置创建目标文件 ,该目标文件是空文件,用于存储多个传输线程所传输的文件片段。
【文档编号】H04L29/08GK103997514SQ201410165392
【公开日】2014年8月20日 申请日期:2014年4月23日 优先权日:2014年4月23日
【发明者】康暖 申请人:汉柏科技有限公司