一种分布式文件系统提升上载文件速度的方法
文献发布时间:2023-06-19 19:16:40
技术领域
本发明涉及文件上传技术领域,具体为一种分布式文件系统提升上载文件速度的方法。
背景技术
随着技术的发展,视频、图片等各种文件的格式也在不断进步,消费者也倾向于选择更大存储空间的设备。更清晰的画质、音质,更详细的数据,使得文件的体积也在不断的膨胀。导致文件在网络中传输也需要更多的计算和更多的带宽占用。
常见使用一些分段工具,进行上传后,再对云端文件使用不同的算法进行校验,校验完整则上传完毕,如中国专利CN113938269B一种文件分片上传校验方法,其中,该方法包括:接收终端上传的目标文件的初始MD5值和文件大小值;接收终端生成的分片数据及其前置MD5中间对象和当前MD5中间对象;将本地接收到的分片数据和前置MD5中间对象在数据层合并,并判断合并的结果与终端生成的当前MD5中间对象是否一致,若是,输出分片数据的校验正确信息;在所有分片数据上传及校验完成之后,根据最后一个分片数据的当前MD5中间对象确定目标文件的接收MD5值,判断接收MD5值与初始MD5值是否一致,若是,输出文件校验正确信息。
CN109246221A一种多文件的数据分段高速上传方法,属于数据传输技术领域,本发明的多文件的数据分段高速上传方法包括:获取待上传文件的结构信息;发送所述待上传文件的结构信息到服务器;接收服务器发送的几何拓扑结构信息;根据所述几何拓扑结构信息传输所述待上传文件到服务器的多个存储节点。
本发明提供了一种多文件的数据分段高速上传方法、客户端和服务器,可实现多个文件数据的的快速传输。
而上述专利中和业界常用上传方案中,在本地文件上传到云端的过程中,可能会遇到本地存储设备和云端存储设备的IO(读写)瓶颈,网络吞吐量瓶颈、网络协议的限制,导致文件的上传速度不佳,为此我们提出了一种分布式文件系统提升上载文件速度的方法。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种分布式文件系统提升上载文件速度的方法,实现分段、多线程、数据流压缩等技术问题。
(二)技术方案
为实现上述所述目的,本发明提供如下技术方案:一种分布式文件系统提升上载文件速度的方法,包括以下步骤:
第一步:检查网络协议是否支持多线程;
第二步:对文件进行分块;
第三步:开始上传线程;
第四步:打开本地输入流以及网络中的输出流,用DEFLATE算法对输出流进程封装;
第五步:进行传输,中断则保留分段信息;
第六步:完成上传。
优选的,第一步的具体内容为:检查是否支持随机打开文件的某个位置,支持随机写入则支持多线程。
优选的,第二步中的具体内容为:文件长度为x,分块后三段文件的地址范围为[0,x/3)、[x/3,2*x/3)、[2*x/3,x)。
优选的,第三步的具体内容为:基于分块的数量,在线程池中启动对应数量的上传线程,每个线程只上传对应的一段文件,并将分段信息作为常量,放入对应线程。
优选的,第四步中DEFLATE算法每次以32KB的缓冲区大小进行压缩。
优选的,第五步的具体内容为:将压缩的缓冲区放入网络输出流中,并得到这次的压缩后缓冲区大小,下一次传输以压缩后缓冲区大小加当前偏移量作为下次偏移量,开始下一次的缓冲区传输和压缩,如果上传线程遭到中断,则保存当前线程的传输结果,最后保存整个分段信息标记文件。
(三)有益效果
与现有技术相比,本发明提供了一种分布式文件系统提升上载文件速度的方法,具备以下有益效果:
1、该分布式文件系统提升上载文件速度的方法,通过多线程和文件分段的方式,可充分利用网络和CPU资源,减小本地存储设备的读写限制对传输速度的影响。
2、该分布式文件系统提升上载文件速度的方法,通过对缓冲区的压缩,有效减小了网络的吞吐量,提升了传输速度。
3、该分布式文件系统提升上载文件速度的方法,与现有专利CN113938269B的链式的校验对比,本申请实现了多文件片段同步上传,解决了分片上传的校验速度较慢的问题,上传结束后无需再将各个分片数据合并,从而节省了合并动作所需的算力,提升了文件校验速度。
附图说明
图1为本发明流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,一种分布式文件系统提升上载文件速度的方法,包括以下内容:
步骤101、检查当前使用的网络协议是否支持本发明的多线程,主要判断方法为,是否支持随机打开某个文件(不从文件的0位置开始写入,而可以随机从某一个给定的位置写入数据)。大多数网络协议都支持随机写入文件,如HTTP、FTP、SMB。如果支持随机写入则进入步骤102,不支持则只进行普通的单线程复制,不属于本发明的范畴。
HTTP是一种客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用、或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫(user agent)。应答的服务器上存储着资源,比如和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个,比如代理,网关,或者隧道(tunnels)。尽管是互联网上最流行的应用,HTTP协议并没有规定必须使用它和它支持的层。事实上,HTTP可以在任何其他上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而提供传输控制,按顺序组织数据,和错误纠正。
通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform ResourceIdentifiers)(或者,更准确一些,URLs)来标识。
FTP同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP服务器,就要用到FTP的客户端软件,通常Windows自带“ftp”命令,这是一个命令行的FTP客户程序,另外常用的FTP客户程序还有FileZilla、CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。
SMB是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPX和NetBEUI之上。
SMB一种/服务器、请求/响应协议。通过SMB协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过SMB协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(namedpipe)等资源。
在TCP/IP环境下,客户机通过NetBIOSoverTCP/IP(或NetBEUI/TCP或SPX/IPX)连接服务器。一旦连接成功,客户机可发送SMB命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。
从开始,MicrosoftWindows操作系统(operatingsystem)都包括了客户机和服务器SMB协议支持。Microsoft为Internet提供了SMB的开源版本,即通用Internet文件系统(CIFS)。与现有Internet应用程序如(FTP)相比,CIFS灵活性更大。对于UNIX系统,可使用一种称为Samba的共享软件。
步骤102、开始对本地文件开始分块。假设文件长度为x,三段文件的顺序读取地址为[0,x/3)、[x/3,2*x/3)、[2*x/3,x)。并且在内存中保存分段信息,数据结构如图1。分块结束后进入步骤103。
步骤103、在线程池中初始化三个固定的上传线程,每个线程只上传对应的一段文件,并将分段信息和待上传文件作为变量,放入线程,执行三个上传线程。
步骤104、在本地打开文件的输入流,网络中的输出流,用DEFLATE算法对输出流进程封装,设置DEFLATE算法的基本参数为32KB缓冲区大小和默认压缩等级。
DEFLATE是一种无损数据压缩算法,其中包含了LZ777算法和哈夫曼编码,被定义在RFC 1951规范中。RFC也是为互联网规范、通信协议、程序和事件的官方参考文档。在图片视频压缩中被大量使用。本发明使用DEFLATE算法封装上传的输出流。使用了该方案后,同样的文件流缓冲区,最大可承载4倍于未压缩文件的内容。同样大小的缓冲区可以传输更多的数据,明显加快了传输速度。
步骤105、将压缩的缓冲区放入网络输出流中,并得到这次的压缩后缓冲区大小。下一次传输以压缩后缓冲区大小加当前偏移量作为下次偏移量,开始下一次的缓冲区传输和压缩。如果上传线程遭到中断,则保存当前线程的传输结果,最后保存整个分段信息标记文件。
本发明主要使用了两种技术手段达到加速网络传输速度的效果,分别为:DEFLATE压缩、多线程传输和文件分段。
多线程传输可以尽可能利用CPU资源,加速文件上传速度。在本发明中与文件分段共同使用。将文件进行分割,分为三个部分,每个部分使用单独的上传线程进行传输,只是逻辑上将文件进行分段,并未产生副本,所以不占用更多的存储空间。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
- 一种分布式文件系统目录文件个数配额的实现方法及装置
- 一种基于分布式文件系统的数据同步方法和装置
- 一种分布式文件系统存储单元的启动方法、装置及设备
- 一种分布式文件系统存储模块的部署优化方法及装置
- 一种基于分布式文件系统的配置异步预分配实现方法
- 一种分布式存储文件系统提升文件探知速度的方法、装置
- 一种分布式文件系统控制数据恢复速度的方法及装置