CN109547566B - 一种基于内存分配的多线程上传优化方法 - Google Patents
一种基于内存分配的多线程上传优化方法 Download PDFInfo
- Publication number
- CN109547566B CN109547566B CN201811587000.0A CN201811587000A CN109547566B CN 109547566 B CN109547566 B CN 109547566B CN 201811587000 A CN201811587000 A CN 201811587000A CN 109547566 B CN109547566 B CN 109547566B
- Authority
- CN
- China
- Prior art keywords
- file
- uploading
- uploaded
- size
- authority
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于内存分配的多线程上传优化方法,包括步骤:1)获取当前操作用户的基础数据;2)利用获取的信息对上传请求进行预处理;3)根据上传文件大小判断是否需要切片多线程上传;4)利用服务器当前空闲内存情况,将上传文件的临时文件存放到指定的缓存位置;5)记录上传文件的元数据信息到数据库;6)将缓存中的临时文件写入文件最终需要存放的磁盘位置。本发明从业务逻辑与服务器内存管理两方面出发,通过客户端和服务器端协同合作,在网络条件较差时具有较高的上传成功率,同时支持断点续传功能,提升客户端的上传速率与服务器的带宽利用率。
Description
技术领域
本发明涉及互联网和内存管理的技术领域,尤其是指一种基于内存分配的多线程上传优化方法。
背景技术
近年来,移动互联网技术的不断发展,越来越多的企业开始上云服务,提供SaaS服务。不管是商品流通类,信息内容服务类还是社交类的企业,都有大量的数据需要上传存储到云端服务器。市场调研机构IDC分析报告指出,2017年全球的数据总量为21.6ZB,目前全球数据的增长速度在每年40%左右,预计到2020年全球的数据总量将达到40ZB。
随着信息化办公与协同办公的普及以及数据爆炸式的增长,工作科研中越来越多的企业和学校使用云存储来进行文件传输与共享,极大的提高了工作效率。各种企业网盘应运而生,中国企业网盘市场占比较高的有联想企业网盘、够快云库、坚果云、有道云协作和亿方云等,但是他们都更多的针对存储的安全性和高效性,关注的是存储数据的本身,在用户权限的细粒度分级管理以及企业组织架构的多级管理方面并不突出。Weblib存储平台是广东计算机网络重点实验室与数园网络有限公司联合开发的企业级存储系统,在用户与文件资源的细粒度权限管理方面有细致的设计,支持更加丰富的资源数据共享,已经在多个学校和企业应用。
文件上传的实质是将本地文件通过网络I/O传送到服务器,服务器接收相应的数据存储到临时目录,进行一系列的业务检查操作之后将临时目录中的数据存储到指定的位置。缓冲区主要是针对内存和硬盘读写速度不匹配而设立的。当传输文件时,为了提高文件存储的效率,接收数据的Socket端并不是接收到一个文件数据块就写磁盘,而是将数据缓存在这个Buffer中,当Buffer中达到一定数量的写满时,再由统一的读线程将Buffer中的数据写到磁盘中,这样能达到文件的最大传输速度。上传文件的临时目录一般都是指定的硬盘位置,文件数据块在从网络I/O流传输过来,到最终写入到相应的存储硬盘位置,会有一定的性能损失。传统的业界提高上传速率的方法大多数是基于多线程上传或者从网络层面加以扩展,很少有从上传流程中的内存管理方面进行优化的。
近年来,随着服务器的可用内存都越来越大以及多核CPU的快速发展,内存计算得到了越来越多的关注。本文使用服务器的空闲内存来加速文件的上传处理速率,在客户端将文件分片处理,并行上传到服务器,通过设置临时目录为tmpfs,将上传文件的数据块存储在内存中而不再存入磁盘,避免了流程中过多的I/O操作,减少开销,提高系统的响应速率。
在文件上传优化方面的研究大多是基于网络架构或者是缓存设置进行优化的,第一类是从网络层面出发分析研究问题,提出一系列网络加速的方法;第二类是根据系统的配置进行缓存的优化调整。在利用缓存方面,Negin Golrezaei等人提出利用分布式缓存帮助来处理无线移动设备中对视频内容持续增长的上传下载需求;Xiaowei Qin等针对无线上传服务中的缓存问题提出了一种自适应的加速上传机制,可以动态计算缓存的重要性;Chang C利用线性最优化方法对对等网络中的上传下载进行了相应的优化。他们的研究的大多是无线网络场景或者是对等网络中的优化方法,而没有从业务控制方面或者是I/O流的存储优化方面进行过多的研究或者优化。
本发明提供一种基于内存分配的多线程上传优化方法,将从业务逻辑与服务器内存管理两方面出发,通过客户端和服务器端协同合作,提升客户端的上传速率与服务器的带宽利用率。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提出了一种基于内存分配的多线程上传优化方法,通过控制转移,将上传请求相应的参数检查,权限检查,空间大小判断等处理提前到传输文件之前,从服务器端转移到客户端,减少不符合约束的上传请求对服务器资源和带宽的浪费;通过对上传文件分片处理,多线程并发上传,在网络中断恢复后可以继续断点续传而无需整个文件重新上传,节省服务器资源;通过将上传的临时文件不放入磁盘而是保留在内存中,减少两次磁盘和内存之间的数据交换,因减少磁盘的访问而提高CPU的吞吐与处理的速度。通过客户端和服务器端协同合作,提升客户端的上传速率与服务器的带宽利用率。
为实现上述目的,本发明所提供的技术方案为:一种基于内存分配的多线程上传优化方法,包括以下步骤:
1)获取当前操作用户的基础数据,包括上传权限信息和空间大小限制;
2)利用获取的信息对上传请求进行预处理,若上传空间不足或者权限不足则上传请求直接在客户端拒绝,否则继续以下操作;
3)根据上传文件大小判断是否需要切片多线程上传;
4)利用服务器当前空闲内存情况,将上传文件的临时文件存放到指定的缓存位置;
5)记录上传文件的元数据信息到数据库;
6)将缓存中的临时文件写入文件最终需要存放的磁盘位置。
在步骤1)中,所述基础数据是指要进行上传文件操作的用户在系统中的权限信息,已使用空间大小,总空间大小限制和单文件大小限制,权限信息包括对指定位置是否有上传权限,下载权限,删除权限,上传权限指的是能够上传文件,下载权限指的是能够下载指定的文件,删除权限指的是能够删除文件;总空间大小限制指的是系统分配给用户的所有的文件存储空间的总的大小限制;已使用空间大小指的是用户已经上传的所有文件的大小总和;单文件大小限制指的是系统针对上传的单个文件大小的限制。
在步骤2)中,根据待上传文件的大小在客户端进行预处理,将权限判断与大小限制判断提前到请求方,进行控制转移,避免无效的上传请求占用带宽,包括:将不具有上传权限的上传请求拒绝、将待上传文件大小大于单文件大小限制的上传请求拒绝、将待上传文件大小大于剩余空间(总空间大小减去已使用空间大小)的上传请求拒绝。
在步骤3)中,根据待上传文件大小判断是否需要进行分片操作,当待上传文件大小小于2MB时,不进行分片操作;当文件大小超过2MB时将文件切片为2MB大小的文件块再依次上传,若某一块分片上传失败后可以从上次上传成功的分片后面继续开始上传。
在步骤4)中,根据服务器当前空闲内存情况,对上传请求进行下面处理:
当服务器空闲内存大于待上传文件大小时,将上传文件的临时文件存放到内存中;
当服务器空闲内存小于待上传文件大小时,将上传文件的临时文件存放到指定的磁盘位置中。
在步骤5)中,对上传文件进行CRC校验,将校验无误的上传请求的上传者、文件名字、上传目录和上传时间等记录上传文件的元数据信息保存到数据库记录中;若校验失败直接返回客户端文件分片校验失败。
在步骤6)中,对于不同的上传请求,有以下不同的处理:
上传请求是未进行分片的文件直接将临时文件写入最终需存放的位置;
上传请求是用户待上传文件的分片且不是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置;
上传请求是用户待上传文件的分片且是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置,然后融合文件分片,将融合后的文件写入文件最终需要存放的位置,删除文件分片。
本发明与现有技术相比,具有如下优点与有益效果:
1、本发明首次提出并实现了控制转移,将上传请求的约束检查从服务器端转移到客户端,减少不符合约束的上传请求对服务器资源和带宽的浪费。
2、本发明首次实现了根据服务器内存使用情况选择将上传的临时文件存放在磁盘或者保留在内存中,在服务器内存有余量的情况下,将上传的临时文件存放在内存中,减少两次磁盘和内存之间的数据交换提高CPU的吞吐与处理的速度,利于服务器在相同的时间内处理更多请求。
3、本发明通过使用在客户端进行文件分片处理后上传,能够避免上传大文件时因单个HTTP数据量过大而导致连接超时,同时在网络条件较差时较小尺寸的文件有较高的上传成功率,同时使用分片处理之后可以支持断点续传功能。
4、本发明使用CRC校验,保证了传输文件与系统的安全性,服务器在收到上传文件后对文件进行CRC校验,可以发现在传输过程中文件是否遭到入侵或者修改,提升了上传系统的安全性。
5、本发明方法在文档管理系统等需要上传文件的WEB系统中具有广泛的使用空间,普适性强,在提升上传效率和服务器带宽利用率方面有广阔前景。
附图说明
图1为本发明使用系统的系统架构图。
图2为本发明方法的逻辑流程图。
图3为本发明的客户端处理流程图。
图4为本发明的服务器端处理流程图。
图5为本发明的上传请求时序图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
如图1至图5所示,本实施例所提供的基于内存分配的多线程上传优化方法,需要客户端和服务器端协同合作,客户端需要对待上传文件做分片处理,服务器端需要实时判断内存剩余情况,并且在客户端上传完最后一块文件分片后进行文件融合,其包括以下步骤:
1)获取当前操作用户的基础数据,包括上传权限信息和空间大小限制,其中,所述基础数据是指要进行上传文件操作的用户在系统中的权限信息,已使用空间大小,总空间大小限制和单文件大小限制,表1是一个用户test针对两个不同上传位置的基本信息实例。
表1.用户test针对两个不同上传位置的基本信息
表1中数据表示用户test对文件柜1有下载权限,上传权限,修改权限,删除权限,文件柜1总容量大小限制为20GB,单文件大小限制为2GB;对文件柜2有下载权限,没有上传权限,修改权限,删除权限,文件柜2总容量大小限制为100GB,单文件大小限制为5GB。
2)利用获取的信息对上传请求进行预处理,如果test用户要上传文件到文件柜2,由于步骤1)中的基本信息显示test用户在文件柜2没有上传权限,所以客户端可以直接拒绝这个上传请求;如果test用户要上传3GB文件到文件柜1,由于步骤1)中的基本信息显示test用户在文件柜2的单文件大小限制为2GB(小于3GB),所以客户端可以直接拒绝这个上传请求。
3)根据上传文件大小判断是否需要切片多线程上传,当待上传文件大小小于2MB时,不进行分片操作;当文件大小超过2MB时将文件切片为2MB大小的文件块再依次上传,若某一块分片上传失败后可以从上次上传成功的分片后面继续开始上传。
4)利用服务器当前空闲内存情况,将上传文件的临时文件存放到指定的缓存位置,当服务器空闲内存大于待上传文件大小时,将上传文件的临时文件存放到内存中;当服务器空闲内存小于待上传文件大小时,将上传文件的临时文件存放到指定的磁盘位置中。
5)对上传文件进行CRC校验,将校验无误的上传请求的上传者、文件名字、上传目录和上传时间等记录上传文件的元数据信息保存到数据库记录中;若校验失败直接返回客户端文件分片校验失败。
6)上传请求是未进行分片的文件直接将临时文件写入最终需存放的位置。当上传请求是未进行分片的文件直接将临时文件写入最终需存放的位置;当上传请求是用户待上传文件的分片且不是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置;上传请求是用户待上传文件的分片且是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置,然后融合文件分片,将融合后的文件写入文件最终需要存放的位置,删除文件分片。
为了证明优化后方法的有效性,进行对比试验,实验结果如下表2所示。
表2.服务器带宽利用率对比结果
从上可以发现,在采用以上优化方法后,服务器的带宽利用率显著提升,平均带宽使用率提高40%左右。本发明在文档管理系统等需要上传文件的WEB系统中具有广泛的使用空间,普适性强,在提升上传效率和服务器带宽利用率方面有广阔前景,值得推广。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (5)
1.一种基于内存分配的多线程上传优化方法,其特征在于,包括以下步骤:
1)获取当前操作用户的基础数据,包括上传权限信息和空间大小限制;
2)利用获取的信息对上传请求进行预处理,若上传空间不足或者权限不足则上传请求直接在客户端拒绝,否则继续下面操作;
3)根据上传文件大小判断是否需要切片多线程上传;
4)利用服务器当前空闲内存情况,将上传文件的临时文件存放到指定的缓存位置;其中,对上传请求进行处理:
当服务器空闲内存大于待上传文件大小时,将上传文件的临时文件存放到内存中;
当服务器空闲内存小于待上传文件大小时,将上传文件的临时文件存放到指定的磁盘位置中;
5)记录上传文件的元数据信息到数据库;
6)将缓存中的临时文件写入文件最终需要存放的磁盘位置;其中,对于不同的上传请求,有以下不同的处理:
上传请求是未进行分片的文件直接将临时文件写入最终需存放的位置;
上传请求是用户待上传文件的分片且不是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置;
上传请求是用户待上传文件的分片且是最后一块分片时,将临时文件写入系统指定的上传文件分片存放的位置,然后融合文件分片,将融合后的文件写入文件最终需要存放的位置,删除文件分片。
2.根据权利要求1所述的一种基于内存分配的多线程上传优化方法,其特征在于:在步骤1)中,所述基础数据是指要进行上传文件操作的用户在系统中的权限信息、已使用空间大小、总空间大小限制和单文件大小限制,所述权限信息包括对指定位置是否有上传权限、下载权限和删除权限,所述上传权限指的是能够上传文件,所述下载权限指的是能够下载指定的文件,所述删除权限指的是能够删除文件;所述总空间大小限制指的是系统分配给用户的所有文件存储空间的总的大小限制;所述已使用空间大小指的是用户已经上传的所有文件的大小总和;所述单文件大小限制指的是系统针对上传的单个文件大小的限制。
3.根据权利要求1所述的一种基于内存分配的多线程上传优化方法,其特征在于:在步骤2)中,根据待上传文件的大小在客户端进行预处理,将权限判断与大小限制判断提前到请求方,进行控制转移,避免无效的上传请求占用带宽,包括:将不具有上传权限的上传请求拒绝、将待上传文件大小大于单文件大小限制的上传请求拒绝、将待上传文件大小大于剩余空间的上传请求拒绝。
4.根据权利要求1所述的一种基于内存分配的多线程上传优化方法,其特征在于:在步骤3)中,根据待上传文件大小判断是否需要进行分片操作,当待上传文件大小小于2MB时,不进行分片操作;当文件大小超过2MB时,将文件切片为2MB大小的文件块再依次上传,若某一块分片上传失败后从上次上传成功的分片后面继续开始上传。
5.根据权利要求1所述的一种基于内存分配的多线程上传优化方法,其特征在于:在步骤5)中,对上传文件进行CRC校验,将校验无误的记录上传文件的元数据信息保存到数据库记录中,其中,所述元数据信息包括上传请求的上传者、文件名字、上传目录和上传时间;若校验失败直接返回客户端文件分片校验失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811587000.0A CN109547566B (zh) | 2018-12-25 | 2018-12-25 | 一种基于内存分配的多线程上传优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811587000.0A CN109547566B (zh) | 2018-12-25 | 2018-12-25 | 一种基于内存分配的多线程上传优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109547566A CN109547566A (zh) | 2019-03-29 |
CN109547566B true CN109547566B (zh) | 2020-12-22 |
Family
ID=65857594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811587000.0A Active CN109547566B (zh) | 2018-12-25 | 2018-12-25 | 一种基于内存分配的多线程上传优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109547566B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110740171B (zh) * | 2019-09-26 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 一种数据分片传输方法与装置 |
CN110611718A (zh) * | 2019-10-08 | 2019-12-24 | 深圳市九洲电器有限公司 | 文件传输方法、装置、服务器及存储介质 |
CN111404990B (zh) * | 2020-02-14 | 2023-06-02 | Oppo(重庆)智能科技有限公司 | 文件传输方法、装置、客户端及存储介质 |
CN111614751A (zh) * | 2020-05-19 | 2020-09-01 | 上海鸿翼软件技术股份有限公司 | 一种企业内容管理系统的文件上传方法 |
CN111835867A (zh) * | 2020-07-28 | 2020-10-27 | 浪潮云信息技术股份公司 | 文件上传方法及系统 |
CN112019605B (zh) * | 2020-08-13 | 2023-05-09 | 上海哔哩哔哩科技有限公司 | 数据流的数据分发方法和系统 |
CN112114964A (zh) * | 2020-08-17 | 2020-12-22 | 上海睿赛德电子科技有限公司 | 一种适用于嵌入式系统的应用安全访问内核方法 |
CN113824760B (zh) * | 2021-08-03 | 2024-01-30 | 中债金科信息技术有限公司 | 文件并发分块上传方法、装置、电子设备及存储介质 |
CN115665168B (zh) * | 2022-10-21 | 2024-10-11 | 济南浪潮数据技术有限公司 | 一种大文件分片上传方法、装置及其介质 |
CN115617280B (zh) * | 2022-12-19 | 2023-03-03 | 苏州浪潮智能科技有限公司 | 临时目录的优化管理方法、装置、电子设备及存储介质 |
CN117156172B (zh) * | 2023-10-30 | 2024-01-16 | 江西云眼视界科技股份有限公司 | 视频切片上报方法、系统、存储介质及计算机 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103237049A (zh) * | 2013-03-18 | 2013-08-07 | 北京易华录信息技术股份有限公司 | 一种文件传输方法及装置 |
CN103618942A (zh) * | 2013-12-16 | 2014-03-05 | 乐视致新电子科技(天津)有限公司 | 智能电视及其浏览器网页视频的播放方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188544A (zh) * | 2007-12-04 | 2008-05-28 | 浙江大学 | 分布式文件服务器基于缓冲区的文件传输方法 |
US9197702B2 (en) * | 2013-12-06 | 2015-11-24 | Cellco Partnership | System for and method for media upload multithreading for large file uploads |
CN103701937A (zh) * | 2014-01-14 | 2014-04-02 | 上海斐讯数据通信技术有限公司 | 一种上传大文件的方法 |
CN106060160B (zh) * | 2016-07-07 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 一种文件上传方法及装置 |
-
2018
- 2018-12-25 CN CN201811587000.0A patent/CN109547566B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103237049A (zh) * | 2013-03-18 | 2013-08-07 | 北京易华录信息技术股份有限公司 | 一种文件传输方法及装置 |
CN103618942A (zh) * | 2013-12-16 | 2014-03-05 | 乐视致新电子科技(天津)有限公司 | 智能电视及其浏览器网页视频的播放方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109547566A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109547566B (zh) | 一种基于内存分配的多线程上传优化方法 | |
CN104932956B (zh) | 一种面向大数据的云容灾备份方法 | |
US11005717B2 (en) | Storage capacity evaluation method based on content delivery network application and device thereof | |
US8615485B2 (en) | Method and system for managing weakly mutable data in a distributed storage system | |
US8341118B2 (en) | Method and system for dynamically replicating data within a distributed storage system | |
CN110647497A (zh) | 一种基于hdfs的高性能文件存储与管理系统 | |
TW202111520A (zh) | 日誌結構儲存系統 | |
TW202111585A (zh) | 日誌結構儲存系統 | |
US10110676B2 (en) | Parallel transparent restructuring of immutable content in a distributed object storage system | |
CN102523279A (zh) | 一种分布式文件系统及其热点文件存取方法 | |
JPWO2013018808A1 (ja) | 分散ストレージシステムおよび方法 | |
CN103399823B (zh) | 业务数据的存储方法、设备和系统 | |
US20090235042A1 (en) | Method for the allocation of data on physical media by a file system which optimizes power consumption | |
WO2020098654A1 (zh) | 基于云存储的数据存储方法、装置和存储介质 | |
CN106933868A (zh) | 一种调整数据分片分布的方法及数据服务器 | |
CN106874145A (zh) | 一种基于消息队列的异步数据备份方法 | |
CN104965835B (zh) | 一种分布式文件系统的文件读写方法及装置 | |
KR101990329B1 (ko) | 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치 | |
CN104811646B (zh) | 基于连续存储模型的多视频流数据并发调制及缓冲的存储方法 | |
CN104079600A (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
CN110737635B (zh) | 一种数据分块方法 | |
CN102609508A (zh) | 一种面向网络存储的文件高速访问方法 | |
CN101287002B (zh) | 一种提高流媒体服务器并发媒体流数量的方法 | |
CN116561358A (zh) | 一种基于hbase的3D场景数据文件统一存储与检索方法 | |
CN113835613B (zh) | 一种文件读取方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |