写点什么

今日分享丨从简单传输到大文件分片上传

  • 2024-05-14
    山东
  • 本文字数:2330 字

    阅读完需:约 8 分钟

在数字化信息时代,文件传输技术的重要性不言而喻。从个人用户日常的文档、图片分享,到企业级的数据交换、云服务存储,再到科研领域庞大的数据集传输,文件传输技术的应用场景日益广泛,需求也日益增长。从简单的文本文件到海量的资料文件,文件传输技术经历了怎样的发展过程?本文将带您了解文件传输技术的演进,特别是大文件分片上传技术的实现思路。

发展历程

1.  文件传输的起源:简单传输

在计算机网络的早期,最初的文件传输协议如 FTP(文件传输协议)诞生于 1971 年,它允许用户在客户端和服务器之间传输文件。FTP 协议简单、直接,但存在一些局限性,比如传输过程中的安全性问题,以及对大文件传输效率的挑战。

2.  HTTP 协议的兴起

随着万维网的诞生,HTTP(超文本传输协议)成为了互联网上应用最广泛的协议之一。HTTP 协议最初的设计主要用于文本和小型文件的传输,但随着互联网技术的发展,HTTP 也逐渐支持了更复杂的数据类型和更大的文件传输

3.  异步传输和 Ajax

Ajax 技术的出现为文件上传带来了革命性的变化。通过 Ajax,用户可以在不刷新整个页面的情况下,异步地与服务器交换数据。通过异步处理,减少了用户文件上传的等待时间,这极大地提升了用户体验。

4.  流式传输

随着传输文件的体量不断增加,传统文件传输方式会将文件全部保存到内存中,在并发上传的场景下对服务器会产生巨大压力。流式传输,则不需要等待整个文件全部保存到内存中,可以实现在通道中边读边写,极大节省服务器内存资源。并且显著减少了启动延时,提供了更快的响应时间。

5.  分片上传

随着互联网上大文件的增多,我们经常会面对几百 G 级别的文件传输,传统的全文件上传方式开始显得力不从心。大文件上传过程中的高延迟、低吞吐量以及传输失败的风险,促使了分片上传技术的诞生。

技术思路

1.   分片上传

分片上传是解决大文件上传问题的核心技术之一。其基本原理是将大文件分割成多个小块,每个小块独立上传至服务器,上传完成后,服务器再按照预设规则进行重组。这样既能有效避免单个大文件因网络中断或服务器响应超时而造成的上传失败,也能实现并行上传,提高上传速度。

1)   前端实现

前端采用通过浏览器实现文件读取,将文件分割成指定大小的分片,并为每个分片生成唯一的标识符,这个标识符可以包含文件名、分片序号等信息,确保服务器能够正确识别和拼接。然后,将文件分片及其标识符通过异步通信发送到服务器。

2)   服务端实现

服务端接受前端发过来的文件分片以及其标识符,并通过标识符确保收到的请求是文件的全部且不重复的分片。对于支持分片传输的对象存储等存储方案,可以直接将分片数据通过协议本身功能落到存储介质中;对于本身不具备分片存储的传输协议,可以在服务器中将分片文件存放在临时存储区域,待分片校验完成后,将临时文件进行合并,清理临时文件,并实现大文件的持久化存储。



2.   断点续传

大文件传输往往会遇到网络不稳定或用户等待时间较长暂停上传的情况,如果每次都重新开始上传,对网络性能以及服务器资源都是一种浪费,且对用户体验不够友好。断点续传能够从上次中断的位置继续上传,而不必重新开始整个文件的上传过程。通过记录已上传的分片信息,当网络恢复或用户再次上传时,只需上传未完成的部分即可。

断点续传的实现需要基于分片上传的基础,通过记录已经完成了哪些分片的上传,才能定位续传过程中需要再次传续的文件内容。

1)   前端实现

再次上传前,前端先访问服务端获取已经完成上传的分片信息列表,确认当前文件的上传进度信息。针对未上传成功的分片,前端重新读取本地对应分片的数据,并发起上传请求。此外,前端在上传过程中要实时更新上传进度,并能及时捕获异常,当某一分片上传失败时,可标记该分片待重试。

2)   服务端实现

服务器需要维护一个持久化的数据结构,记录每个文件及其分片的上传状态,以便前端查询。如果该分片尚未上传或不完整,则接收并存储新的数据;若已经完整,则忽略本次上传请求。当所有分片均上传完成后,服务器端检查完整性,一旦确认所有分片齐全且有效,则将文件合并并移动到最终存储位置。

3.   其他优化技术

除了分片上传、断点续传两大核心技术以外,我们还可以从其他方面进一步提高大文件上传速度,提升用户体验。

优化传输协议,如 HTTP/2 和 QUIC 协议支持多路复用,能够在单个 TCP 连接上并发处理多个请求,显著提高大文件上传效率;在前端层面,可以采用流式上传、动态调整上传速率等方式减少用户等待时间,提升上传体验。同时,利用 Web Worker 等技术进行异步上传,保证用户界面在上传过程中依然保持流畅。后端服务需要具备高并发处理能力和稳定的持久化存储机制,同时,对于大量小文件合并、存储优化等方面也需要有良好的解决方案。比如,通过负载均衡技术分散大文件上传压力,使用分布式存储系统确保数据安全可靠。

发展前景

随着互联网技术的不断进步,大文件上传在各个领域的应用将越来越广泛。本文提出的分片上传、断点续传等技术方案,可以有效解决大文件上传过程中遇到的问题,提高上传速度和成功率,确保文件安全性。此外,随着 5G、边缘计算等新技术的发展和普及,大文件上传的技术方案将会更加成熟和完善。

1.  更智能的动态分片策略:结合网络环境实时动态调整分片大小,进一步提升上传效率。

2.  实时进度反馈与错误重试机制:通过实时反馈上传进度,让用户了解上传状态,并在遇到错误时自动进行重试,提高上传成功率。

3.  安全性增强:在文件上传过程中,强化数据加密、完整性校验等安全保障措施,确保数据在传输过程中的安全性。

4.  结合 AI 技术预测和优化网络流量:利用 AI 预测网络状况,智能调度上传任务,降低网络拥塞,进一步提升用户体验。


写在最后,欢迎大家下载我们的inBuilder开源社区版,可免费下载使用,加入我们,开启开发之旅!


用户头像

还未添加个人签名 2023-03-07 加入

塑造企业一体化研发新范式

评论

发布
暂无评论
今日分享丨从简单传输到大文件分片上传_文件传输_inBuilder低代码平台_InfoQ写作社区