CN111614744A - 一种大文件下载传输方法 - Google Patents
一种大文件下载传输方法 Download PDFInfo
- Publication number
- CN111614744A CN111614744A CN202010411003.XA CN202010411003A CN111614744A CN 111614744 A CN111614744 A CN 111614744A CN 202010411003 A CN202010411003 A CN 202010411003A CN 111614744 A CN111614744 A CN 111614744A
- Authority
- CN
- China
- Prior art keywords
- file
- subfiles
- requested
- check code
- files
- 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.)
- Pending
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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公布了一种大文件下载传输方法,其核心思想是:将大文件分割成小文件,复制到内存缓存,播放终端每次只需要读取每个小文件,对系统资源影响小;将小文件进行缓存,提高性能;对每个小文件设置缓存时间,缓存时间后从内存中删除,保证在同一时间段只有一部分文件被载入内存,有效防止内存被占满或文件过多过大不能载入内存情况;分割下载便于实现断点传输,还增加了下载线程,提高下载速度。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种大文件下载传输方法。
背景技术
目前广告播放终端被广泛应用,广告播放终端需要重服务器下载播放文件,播放文件直接存储于磁盘上。终端下载文件时,服务器要不断的读取文件,进行磁盘IO操作。在I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。播放终端读取播放文件时,检查内核的缓冲区有没有需要的数据,如果已经缓存了,那么就直接从缓存区中返回;否则从磁盘中读取,然后缓存在播放终端的缓存区中。
现有技术存在以下弊端:多个播放终端下载播放文件时,每个播放终端每次都是从文件的不同位置请求数据,造成服务端过多的磁盘IO操作,影响性能,过多占用服务器资源;过大的文件不能进行缓存,每次只能从磁盘读取,受磁盘读取速度的影响比较大;广告播放终端一般布置在电梯中,广告播放终端与服务器的通讯时常中断,较大的播放文件无法一次性上传至播放终端,断点传输必须保证上传传输位置的准确,否则后导致下载文件失败或不完整;反映下载进度需要额外发送请求。
发明内容
基于上述问题,本发明提供了一种大文件下载传输方法,用以提高播放终端读取服务器内播放文件的读写速度。
为解决上述问题,技术方案是:一种大文件下载传输方法,包括以下步骤,
步骤1.服务端将播放文件分割成N个子文件,子文件按从小到大顺序排列编号;
步骤2.服务端将N个子文件分别存储在磁盘;
步骤3.生成数据索引文件;
步骤4.播放终端向服务端发送读取请求时,服务端返回数据索引文件,播放终端读取数据索引文件,获得编号信息集、N个子文件的数量、每个子文件的大小信息,根据编号信息集和每个子文件的大小信息生成待请求集;
步骤5.播放终端从待请求集中选取第i~j号子文件形成请求集,向服务端发出请求;
步骤6.服务端将第i~j号子文件从磁盘中复制到内存的缓存区,并设置缓存时间;
步骤7.再将第i~j号子文件从内存的缓存区复制到发出请求集的播放终端;
步骤8.服务端读取已复制子文件的编号和大小信息,按已复制子文件的编号为索引条件,比较已复制子文件的大小信息是否与请求集中子文件的大小信息相同,若相同,则标记子文件为请求完成,若不同,则标记子文件为中断,统计请求完成的子文件的数目,和请求完成的子文件的编号和子文件大小信息形成已请求集;
步骤9.根据请求完成的子文件的数目的子文件数量与数据索引文件中子文件总数的比值,获得播放文件下载进度,根据已请求集与待请求集的补集,更新步骤4的待请求集;
步骤10.重复步骤4~9直至,步骤9得到的待请求集为空,将已复制的所有子文件合并。
优选地,若已请求集小于请求集,播放终端执行步骤9前,执行断点传输,
步骤11.从步骤8中统计所有中断的子文件的编号和子文件大小信息形成中断集;
步骤12.从中断集中选取所有子文件形成请求集,向服务端发出请求;
步骤13.将被请求的子文件从内存的缓存区复制到发出请求集的播放终端;
步骤14.重复步骤步骤8,直至已请求集与步骤11的中断集的补集为空。
较佳地,所述子文件大小信息为每个文件的md5校验码。
较佳地,步骤8为:服务端读取已复制子文件的编号和已复制子文件的md5校验码,按已复制子文件的编号为索引条件,比较已复制子文件的md5校验码是否与请求集中子文件的md5校验码相同,若相同,则复制成功,标记子文件为请求完成,若不同,则下载失败或子文件被篡改,标记子文件为中断,统计请求完成的子文件的数目,和请求完成的子文件的编号和md5校验码形成已请求集。
较佳地,步骤1中播放文件分割成N个大小相同的子文件前包括步骤,将播放文件转化为初始md5校验码;
步骤4中数据索引文件还包括初始md5校验码;
步骤10中合并所有子文件后,还包括步骤,读取合并文件的md5校验码,将合并文件的md5校验码与初始md5校验码比较,若相同则下载成功,若不同,则返回步骤1,对播放文件重新分割后重复步骤1~10,直至下载成功。
进一步地,步骤11中子文件大小信息为中断的子文件对应的请求集中子文件md5校验码。
本发明的有益效果为:服务端将大文件按顺序分割成很多个从小到大顺序拍了的小文件,并且编号。播放终端在下载前先请求要下载文件的信息,服务端返回大文件被分成的小文件数量、编号、每个文件的大小和最后一个文件的大小;播放终端第一次请求某个小文件时,该文件会被载入内存,并设置缓存时间,后续终端再请求这个小文件时,直接从内存读取;服务端和终端可根据每次请求的文件编号,即可知道下载进度;因网路故障中断下载的文件,再进行断点传输时,只需要从最后一次传输的编号开始接着往后情况即可;所有小文件下载完成,终端进行校验合并。
如此将大文件分割成小文件,系统每次只需要读取每个小文件,对系统资源影响小;将小文件进行缓存,提高性能;对每个小文件设置缓存时间,缓存时间后从内存中删除,保证在同一时间段只有一部分文件被载入内存,有效防止内存被占满或文件过多过大不能载入内存情况;断点传输只需要获得已下载文件的数据即可,简单准确;读取下载进度无需额外操作。
附图说明
图1为本发明的大文件下载传输方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:将大文件分割成小文件,复制到内存缓存,播放终端每次只需要读取每个小文件,对系统资源影响小;将小文件进行缓存,提高性能;对每个小文件设置缓存时间,缓存时间后从内存中删除,保证在同一时间段只有一部分文件被载入内存,有效防止内存被占满或文件过多过大不能载入内存情况;分割下载便于实现断点传输,还增加了下载线程,提高下载速度。
图1为本发明实施例的方法流程示意图,一种大文件下载传输方法,包括以下步骤,
步骤S1.服务端将播放文件1转化为初始md5校验码,再将播放文件分割成N个子文件,子文件按从小到大顺序排列编号;md5即消息摘要算法(英语:md5Message-DigestAlgorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。它的作用就在于对下载回来的文件用WindowsMD5 Check做一次md5校验,以确保我们获得的文件与该站点提供的文件为同一文件。
步骤S2.服务端将N个子文件分别存储在磁盘;
步骤S3.生成数据索引文件;
步骤S4.播放终端向服务端发送读取请求时,服务端返回数据索引文件,播放终端读取数据索引文件,获得初始md5校验码、编号信息集、N个子文件的数量、每个子文件的md5校验码,根据编号信息集和每个子文件的md5校验码生成待请求集;
步骤S5.播放终端从待请求集中选取第i~j号子文件的编号形成请求集,向服务端发出请求;
步骤S6.服务端将第i~j号子文件从磁盘中复制到内存的缓存区,并设置缓存时间;
步骤S7.再将第i~j号子文件从内存的缓存区复制到发出请求集的播放终端;
步骤S8.服务端读取已复制子文件的编号和md5校验码,按已复制子文件的编号为索引条件,比较已复制子文件的md5校验码是否与请求集中子文件的md5校验码相同,若相同,则复制成功,标记子文件为请求完成,若不同,则下载失败或子文件被篡改,标记子文件为中断,统计请求完成的子文件的数目,和请求完成的子文件的编号和子文件md5校验码形成已请求集;
步骤S9.从步骤S8中统计所有中断的子文件的编号和中断的子文件对应的请求集中子文件md5校验码形成中断集;
步骤S10.从中断集中选取所有子文件形成请求集,向服务端发出请求;
步骤S11.将被请求的子文件从内存的缓存区复制到发出请求集的播放终端;
步骤S12.重复步骤步骤S8,直至已请求集与步骤S9的中断集的补集为空。
步骤S13.根据请求完成的子文件的数目的子文件数量与数据索引文件中子文件总数的比值,获得播放文件下载进度,根据已请求集与待请求集的补集,更新步骤S4的待请求集;
步骤S14顺次重复步骤S4~S8、步骤S13直至,步骤S13得到的待请求集为空,将已复制的所有子文件合并,读取合并文件的md5校验码,将合并文件的md5校验码与初始md5校验码比较,若相同则下载成功,若不同,则返回步骤S1,对播放文件重新分割后重复步骤S1~S14,直至下载成功。
步骤S14中若合并文件的md5校验码与初始md5校验码不同,说明,分割发生错误。
本发明的系统还包括依次信号连接的服务端、磁盘、缓存,终端与缓存、磁盘通讯连接。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种大文件下载传输方法,其特征在于,包括以下步骤,
步骤1.服务端将播放文件分割成N个子文件,子文件按从小到大顺序排列编号;
步骤2.服务端将N个子文件分别存储在磁盘;
步骤3.生成数据索引文件;
步骤4.播放终端向服务端发送读取请求时,服务端返回数据索引文件,播放终端读取数据索引文件,获得编号信息集、N个子文件的数量、每个子文件的大小信息,根据编号信息集和每个子文件的大小信息生成待请求集;
步骤5.播放终端从待请求集中选取第i~j号子文件形成请求集,向服务端发出请求;
步骤6.服务端将第i~j号子文件从磁盘中复制到内存的缓存区,并设置缓存时间;
步骤7.再将第i~j号子文件从内存的缓存区复制到发出请求集的播放终端;
步骤8.服务端读取已复制子文件的编号和大小信息,按已复制子文件的编号为索引条件,比较已复制子文件的大小信息是否与请求集中子文件的大小信息相同,若相同,则标记子文件为请求完成,若不同,则标记子文件为中断,统计请求完成的子文件的数目,和请求完成的子文件的编号和子文件大小信息形成已请求集;
步骤9.根据请求完成的子文件的数目的子文件数量与数据索引文件中子文件总数的比值,获得播放文件下载进度,根据已请求集与待请求集的补集,更新步骤4的待请求集;
步骤10.重复步骤4~9直至,步骤9得到的待请求集为空,将已复制的所有子文件合并。
2.根据权利要求1所述的大文件下载传输方法,其特征在于,若已请求集小于请求集,播放终端执行步骤9前,执行断点传输,包括以下步骤:
步骤11.从步骤8中统计所有中断的子文件的编号和子文件大小信息形成中断集;
步骤12.从中断集中选取所有子文件形成请求集,向服务端发出请求;
步骤13.将被请求的子文件从内存的缓存区复制到发出请求集的播放终端;
步骤14.重复步骤步骤8,直至已请求集与步骤11的中断集的补集为空。
3.根据权利要求1所述的大文件下载传输方法,其特征在于,所述子文件大小信息为每个文件的md5校验码。
4.根据权利要求1所述的大文件下载传输方法,其特征在于,步骤8为:服务端读取已复制子文件的编号和已复制子文件的md5校验码,按已复制子文件的编号为索引条件,比较已复制子文件的md5校验码是否与请求集中子文件的md5校验码相同,若相同,则复制成功,标记子文件为请求完成,若不同,则下载失败或子文件被篡改,标记子文件为中断,统计请求完成的子文件的数目,和请求完成的子文件的编号和md5校验码形成已请求集。
5.根据权利要求1所述的大文件下载传输方法,其特征在于,步骤1中播放文件分割成N个大小相同的子文件前包括步骤,将播放文件转化为初始md5校验码;
步骤4中数据索引文件还包括初始md5校验码;
步骤10中合并所有子文件后,还包括步骤,读取合并文件的md5校验码,将合并文件的md5校验码与初始md5校验码比较,若相同则下载成功,若不同,则返回步骤1,对播放文件重新分割后重复步骤1~10,直至下载成功。
6.根据权利要求2所述的大文件下载传输方法,其特征在于,步骤11中子文件大小信息为中断的子文件对应的请求集中子文件md5校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010411003.XA CN111614744A (zh) | 2020-05-15 | 2020-05-15 | 一种大文件下载传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010411003.XA CN111614744A (zh) | 2020-05-15 | 2020-05-15 | 一种大文件下载传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111614744A true CN111614744A (zh) | 2020-09-01 |
Family
ID=72205661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010411003.XA Pending CN111614744A (zh) | 2020-05-15 | 2020-05-15 | 一种大文件下载传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111614744A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992651A (zh) * | 2021-09-24 | 2022-01-28 | 深圳市有方科技股份有限公司 | 一种基于文件传输协议ftp的下载方法和相关产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656751A (zh) * | 2008-08-18 | 2010-02-24 | 北京数码大方科技有限公司 | 加速上传与下载文件的方法及其系统 |
CN102223416A (zh) * | 2011-06-24 | 2011-10-19 | Tcl集团股份有限公司 | 一种媒体文件的传输方法及系统 |
CN103686255A (zh) * | 2013-11-22 | 2014-03-26 | 乐视致新电子科技(天津)有限公司 | 一种基于hls协议的视频广告投放方法及其装置 |
CN105592369A (zh) * | 2014-10-21 | 2016-05-18 | 中国移动通信集团公司 | 一种视频摘要处理方法及装置 |
CN105847941A (zh) * | 2016-03-17 | 2016-08-10 | 央广视讯传媒股份有限公司 | 一种基于hls协议的音视频流直播方法 |
CN105933799A (zh) * | 2016-05-19 | 2016-09-07 | 成都虚拟世界科技有限公司 | 一种视频播放方法及装置 |
US20180205976A1 (en) * | 2015-09-30 | 2018-07-19 | Huawei Technologies Co., Ltd. | Method and apparatus of obtaining video fragment |
-
2020
- 2020-05-15 CN CN202010411003.XA patent/CN111614744A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656751A (zh) * | 2008-08-18 | 2010-02-24 | 北京数码大方科技有限公司 | 加速上传与下载文件的方法及其系统 |
CN102223416A (zh) * | 2011-06-24 | 2011-10-19 | Tcl集团股份有限公司 | 一种媒体文件的传输方法及系统 |
CN103686255A (zh) * | 2013-11-22 | 2014-03-26 | 乐视致新电子科技(天津)有限公司 | 一种基于hls协议的视频广告投放方法及其装置 |
CN105592369A (zh) * | 2014-10-21 | 2016-05-18 | 中国移动通信集团公司 | 一种视频摘要处理方法及装置 |
US20180205976A1 (en) * | 2015-09-30 | 2018-07-19 | Huawei Technologies Co., Ltd. | Method and apparatus of obtaining video fragment |
CN105847941A (zh) * | 2016-03-17 | 2016-08-10 | 央广视讯传媒股份有限公司 | 一种基于hls协议的音视频流直播方法 |
CN105933799A (zh) * | 2016-05-19 | 2016-09-07 | 成都虚拟世界科技有限公司 | 一种视频播放方法及装置 |
Non-Patent Citations (1)
Title |
---|
HUZILINITACHI: "nginx针对大文件缓存改造设计一(分块缓存及索引设计),https://blog.csdn.net/huzilinitachi/article/details/79538635", 《CSDN》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992651A (zh) * | 2021-09-24 | 2022-01-28 | 深圳市有方科技股份有限公司 | 一种基于文件传输协议ftp的下载方法和相关产品 |
CN113992651B (zh) * | 2021-09-24 | 2024-05-14 | 深圳市有方科技股份有限公司 | 一种基于文件传输协议ftp的下载方法和相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140304513A1 (en) | Storage drive processing multiple commands from multiple servers | |
EP2583176B1 (en) | Error detection for files | |
CN108563532B (zh) | 数据处理方法及相关装置 | |
US8601358B2 (en) | Buffer transfer check on variable length data | |
KR20130139883A (ko) | 오프로드 판독 및 기록 | |
EP2510434B1 (en) | Consistency without ordering dependency | |
US20110067019A1 (en) | Delta compression using multiple pointers | |
WO2021174828A1 (zh) | 数据处理方法、装置、计算机系统及可读存储介质 | |
US11199970B2 (en) | Data storage device and method for rewriting parameters thereof | |
US7356622B2 (en) | Method and apparatus for managing and formatting metadata in an autonomous operation conducted by a third party | |
US5719885A (en) | Storage reliability method and apparatus | |
CN111813345A (zh) | 一种数据传输方法、装置、服务器及可读存储介质 | |
CN112558868A (zh) | 一种配置数据存储的方法和装置及设备 | |
CN111614744A (zh) | 一种大文件下载传输方法 | |
CN110955545A (zh) | 一种数据完整性校验方法、系统及相关设备 | |
CN111464258B (zh) | 一种数据校验方法、装置、计算设备及介质 | |
US7293139B2 (en) | Disk array system generating a data guarantee code on data transferring | |
CN111897833A (zh) | 数据处理方法及装置 | |
KR102088170B1 (ko) | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 | |
CN114388053B (zh) | Ssd数据测试方法、装置、存储介质及测试设备 | |
CN113259410B (zh) | 一种基于分布式存储的数据传输校验方法及系统 | |
CN110806979A (zh) | 接口返回值的校验方法、装置、设备及存储介质 | |
CN111984591A (zh) | 文件存储、读取方法、装置、设备及计算机可读存储介质 | |
CN111460436B (zh) | 一种基于区块链的非结构化数据操作方法和系统 | |
US6915475B1 (en) | Data integrity management for data storage systems |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200901 |
|
WD01 | Invention patent application deemed withdrawn after publication |