一种大量小文件远程传输的方法

文档序号:10597303阅读:410来源:国知局
一种大量小文件远程传输的方法
【专利摘要】本发明提供了一种大量小文件远程传输的方法,其将位于第一计算设备的大量小文件远程传输至第二计算设备,包括如下步骤:打开位于第一计算设备的小文件并读取文件内容;将读取的文件加入到网络包;将网络包中的文件同时经网络传输至所述第二计算设备;重复上述步骤直至所有文件传输完毕。本发明在原有流程上增加了一重操作循环,通过新的同步协议,定义网络包内容,包含多组文件操作,使得原有需要多次的网络通信合并为一次,充分提高了网络带宽利用率;同时本发明通过多线程IO复用技术,消了除文件IO延迟对于系统性能的影响。本发明使得海量小文件的远程传输效率有了显著的提升。
【专利说明】
一种大量小文件远程传输的方法
技术领域
[0001]本发明涉及计算机网络技术领域,特别是一种大量小文件远程传输的方法。【背景技术】
[0002]随着非结构化数据的快速增长,计算机系统创建出越来越多的小的文件。为了提高数据安全行,这些文件也存在着同步、备份等在不同的计算机系统之间传输的需求。
[0003]目前海量小文件的传输主要有两类方法:
[0004](1)根据小文件的列表,使用rsync或ftp等工具一个一个的传输文件。这种方法通常无法有效的利用网络带宽,因为网络传输带宽和网络上传输的消息包的大小有着正相关关系,即随着网络通信包的增大,网络带宽也跟随增大,所以如果一次一个一个文件的传输,会受制于网络带宽,传输效率很低。
[0005](2)事先将小文件整体打包成一个大文件,然后再传输。这种方式将小文件整体打包后,可以增大网络发送的包的大小,从而提高文件传输效率,但是这种方式需要额外的存储空间用于存储打包后的文件,在存储空间有限的情况下无法使用。另外文件的打包和解包也需要浪费计算资源,也延长了整个传输过程。
【发明内容】

[0006]为了克服现有技术的不足,本发明提供了一种大量小文件远程传输的方法,有效提高了海量小文件的传输效率。
[0007]本发明解决其技术问题所采用的技术方案是:
[0008]本发明首先提供一种大量小文件远程传输的方法,其将位于第一计算设备的大量小文件远程传输至第二计算设备,包括如下步骤:
[0009]步骤S11:打开位于第一计算设备的小文件并读取文件内容;
[0010]步骤S12:将读取的文件加入到网络包;
[0011]步骤S13:将网络包中的文件同时经网络传输至所述第二计算设备;
[0012]步骤S14:重复步骤SI 1?S14,直至所有文件传输完毕。
[0013]优选的,在所述步骤S11之前,还包括:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作,若文件名没有读取完毕则在读取文件名后执行步骤S11。
[0014]优选的,在所述步骤S13之前,还包括:判断网络包是否已满,若是则执行步骤S13, 若否则重复步骤S11和步骤S12直至填满网络包。
[0015]优选的,所述步骤S13具体包括:第二计算设备接收保存文件的请求;创建网络包中对应的多个文件;写入对应文件的内容;操作结果列表返回第一计算设备。
[0016]本发明还提供一种大量小文件远程传输的方法,其将位于第一计算设备的大量小文件远程传输至第二计算设备,包括如下步骤:
[0017]步骤S21:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作, 若文件名没有读取完毕则在读取文件名;
[0018]步骤S22:分发若干工作线程;
[0019]步骤S23:以单个线程为单位在每个工作线程中执行如下操作:打开已读取文件名的文件并读取文件内容;将读取的文件加入到网络包;将网络包中的文件同时经网络传输至所述第二计算设备。
[0020]步骤S24:返回步骤S21,直至所有文件传输完毕。[〇〇21]优选的,所述步骤S23中,在将网络包中的文件同时经网络传输至所述第二计算设备之前,还包括,判断网络包是否已满,若否则重复读取文件内容并将读取的文件加入到网络包的操作,直至填满网络包。
[0022]本发明的积极效果:本发明在原有流程上增加了一重操作循环,通过新的同步协议,定义网络包内容,包含多组文件操作,使得原有需要多次的网络通信合并为一次,充分提高了网络带宽利用率;同时本发明通过多线程10复用技术,使得CHJ在线程等待10的时候释放出来给其他工作线程使用,从而消了除文件10延迟对于系统性能的影响。本发明使得海量小文件的远程传输效率有了显著的提升。【附图说明】[0〇23]图1是本发明实施例1的流程不意图;[0〇24]图2是本发明实施例2的流程不意图;[0〇25]图3是本发明实施例3的流程不意图;
[0026]图4是本发明实施例中小文件传输协议网络包的定义图;
[0027]图5是采用rsync及本发明方法传输100万16K文件时的测试结果。【具体实施方式】
[0028]下面结合附图对本发明的优选实施例进行详细说明。
[0029]实施例1
[0030]参照图1,本发明实施例1提供一种大量小文件远程传输的方法,假设需要同步的文件夹仅有一个,下面全部是普通小文件,这里的小文件主要是指小于256KB的文件,最大不能超过512KB的文件,其中每个小文件的大小可能不一样,也可能一样。将本地源服务器一个文件夹下的所有小文件传输到另一台远程服务器上,需要经过下列步骤:[0031 ]步骤S01:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作, 若文件名没有读取完毕则在读取文件名后执行后续步骤;
[0032]步骤S02:打开已读取文件名的文件并读取文件内容;[〇〇33]步骤S03:将文件内容经网络传输至远程服务器;[〇〇34]步骤S04:重复步骤S01?S03,直至所有文件传输完毕。
[0035]所述步骤S03具体包括:远程服务器接收保存文件的请求;创建对应文件;写入对应文件的内容;操作结果列表返回源服务器。
[0036]本实施例中,其中的多个操作需要使用到文件操作或者网络操作这种慢速10操作,在等待操作结果响应的时候无法继续执行后续步骤,其传输效率较差。[〇〇37] 实施例2[〇〇38]参照图2,为提升小文件传输的整体效果,本发明实施例2提供一种大量小文件远程传输的方法,其将位于源服务器某文件夹下的大量小文件远程传输至远程服务器,包括如下步骤:
[0039]步骤SI 1:打开位于源服务器的小文件并读取文件内容;
[0040]步骤S12:将读取的文件加入到网络包;
[0041]步骤S13:将网络包中的文件同时经网络传输至所述远程服务器;[〇〇42]步骤S14:重复步骤SI 1?S14,直至所有文件传输完毕。
[0043]在所述步骤S11之前,还包括:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作,若文件名没有读取完毕则在读取文件名后执行步骤S11。
[0044]在所述步骤S13之前,还包括:判断网络包是否已满,若是则执行步骤S13,若否则重复步骤SI 1和步骤S12直至填满网络包。
[0045]所述步骤S13具体包括:远程服务器接收保存文件的请求;创建网络包中对应的多个文件;写入对应文件的内容;操作结果列表返回源服务器。
[0046]本实施例采用动态自适应组包批量传输方式,在实施例1所述的原有流程上增加了一重操作循环,通过新的同步协议,定义网络包内容(如图4所示),包含多组文件操作,使得原有需要多次的网络通信合并为一次,充分提高了网络带宽利用率。
[0047]—个典型的小文件传输协议网络包如图4所示。首先是整个同步软件协议网络报文控制信息,包含消息头部、校验、协议说明等信息。接下来就是需要传输的文件组信息,每个文件都包含元数据和数据部分。其中元数据包含文件路径、文件名称、大小、属主、时间等文件属性。文件内容即为待传输文件内容。[〇〇48]判断网络包是否已满的标准:
[0049]根据应用部署的网络情况,网络包会选取一个合适的大小。在每次把一个文件元数据和数据附加到网络包之后,都会更新网络包长度。在下一次需要附加文件数据前,都会计算网络包剩余空间是否足够。不足的话就判断当前网络包已满,进入发送流程。
[0050]实施例3[〇〇51]参照图3,为进一步提升小文件传输的整体效果,本发明实施例3提供一种大量小文件远程传输的方法,其将位于源服务器某文件夹下的大量小文件远程传输至远程服务器,包括如下步骤:
[0052]步骤S21:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作, 若文件名没有读取完毕则在读取文件名;[〇〇53]步骤S22:分发若干工作线程;[〇〇54]步骤S23:以单个线程为单位在每个工作线程中执行如下操作:打开已读取文件名的文件并读取文件内容;将读取的文件加入到网络包;将网络包中的文件同时经网络传输至所述远程服务器。
[0055]步骤S24:返回步骤S21,直至所有文件传输完毕。
[0056]所述步骤S23中,在将网络包中的文件同时经网络传输至所述第二计算设备之前, 还包括,判断网络包是否已满,若否则重复读取文件内容并将读取的文件加入到网络包的操作,直至填满网络包。[〇〇57]本实施例采用多线程动态分发10复用传输方式,在一个线程内部,在做10的过程中仍然需要等待10延迟,通过多线程10复用技术,可以使得CHJ在线程等待10的时候释放出来给其他工作线程使用,从而消除文件10延迟对于系统性能的影响。
[0058]通过本发明的传输方法,海量小文件传输性能有显著提升,对比测试结果如图5所示,其中测试环境如下:
[0059]CPU:1ntel E5至强系列
[0060]内存:16G[0061 ]操作系统:CentOS6.4 [〇〇62]文件系统:12盘配置的LeoFS[〇〇63]网络连接:单万兆以太网连接
[0064]以上所述的仅为本发明的优选实施例,所应理解的是,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,并不用于限定本发明的保护范围,凡在本发明的思想和原则之内所做的任何修改、等同替换等等,均应包含在本发明的保护范围之内。
【主权项】
1.一种大量小文件远程传输的方法,其将位于第一计算设备的大量小文件远程传输至 第二计算设备,其特征在于,包括如下步骤:步骤S11:打开位于第一计算设备的小文件并读取文件内容;步骤S12:将读取的文件加入到网络包;步骤S13:将网络包中的文件同时经网络传输至所述第二计算设备;步骤S14:重复步骤SI 1?S14,直至所有文件传输完毕。2.根据权利要求1所述的一种大量小文件远程传输的方法,其特征在于:在所述步骤 S11之前,还包括:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作, 若文件名没有读取完毕则在读取文件名后执行步骤S11。3.根据权利要求1所述的一种大量小文件远程传输的方法,其特征在于:在所述步骤 S13之前,还包括:判断网络包是否已满,若是则执行步骤S13,若否则重复步骤S11和步骤 S12直至填满网络包。4.根据权利要求1所述的一种大量小文件远程传输的方法,其特征在于:所述步骤S13 具体包括:第二计算设备接收保存文件的请求;创建网络包中对应的多个文件;写入对应文 件的内容;操作结果列表返回第一计算设备。5.—种大量小文件远程传输的方法,其将位于第一计算设备的大量小文件远程传输至 第二计算设备,奇特在于,包括如下步骤:步骤S21:打开文件夹,判断文件名是否读取完毕,若文件名读取完毕则结束操作,若文 件名没有读取完毕则在读取文件名;步骤S22:分发若干工作线程;步骤S23:以单个线程为单位在每个工作线程中执行如下操作:打开已读取文件名的文 件并读取文件内容;将读取的文件加入到网络包;将网络包中的文件同时经网络传输至所 述第二计算设备。步骤S24:返回步骤S21,直至所有文件传输完毕。6.根据权利要求5所述的一种大量小文件远程传输的方法,其特征在于:所述步骤S23 中,在将网络包中的文件同时经网络传输至所述第二计算设备之前,还包括,判断网络包是 否已满,若否则重复读取文件内容并将读取的文件加入到网络包的操作,直至填满网络包。
【文档编号】H04L29/08GK105959423SQ201610585749
【公开日】2016年9月21日
【申请日】2016年7月22日
【发明人】康炜, 闫鹏飞
【申请人】北京龙存科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1