云盘处理大文件

本文探讨了网盘对用户上传文件大小限制的技术原因,尤其是超大文件的分布式存储问题。通过分析腾讯TFS和UCloud UFile的解决方案,指出文件大小限制更多的是出于对数据库读取压力和防止异常情况的考虑。此外,推测国内网盘对文件大小的限制可能与防止高清视频盗版分享有关,同时也反映了用户对信息化技术利用程度的现状。推荐了UCloud的UFile服务,其支持大文件上传和秒传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



查看了下问题的日志,这是一个13年9月4号的问题。再看下今天的日期,快3年过去了。但考察各大网盘的现状,我们会发现,它们的文件大小限制,似乎并没有多大的改善(比如百度和360网盘文件大小限制为10GB,会员可以到20GB),如果再联想到前段时间,各大网盘(华为网盘、金山快盘、新浪微盘等)的关闭事件,那么这个问题,似乎就显得很有意思。


从技术实现的角度来看,网盘对用户上传的文件大小,会有限制,但不应该是4GB或10GB这种级别;文件大小的限制,应该是基于产品或运营某些方面的考虑。


首先我们来看下,为什么网盘会用户上传的文件大小,技术上完全可以超过4GB或10GB的级别。简单了解一下网盘的支撑技术-分布式文件系统的基本原理,答案就清晰了。 


1.用户上传一个文件到分布式文件系统后,系统的基本操作是将文件切片,切成许多分片存储到若干块磁盘中(同时为了容灾,每个分片会存三份),而分片的地址,存储在元数据系统中,为了简便起见,我们可以把元数据系统,理解为一个数据库;


2.用户在下载该文件时,系统将根据文件名,从数据库中找出各个分片地址,然后根据地址,依次到对应的磁盘把分片取出,按顺序返回给用户,最终用户侧将得到一个完整的文件。


从这两个流程我们可以看出,由于对文件进行了分片,所以不存在系统某个磁盘空间不够,导致文件无法保存的情况。用户上传的文件再大, 也只是意味着会有更多的分片,只要系统总的存储空间足够,这个文件是可以存储下来的。


虽然流程看似简单,但也有不少难点。 难点之一,就是超大文件上传下载时,分片地址的存储和获取。举个例子:假如系统以 4MB 为单位进行分片,那么在用户上传一个 1TB 的文件时,就需要存储 1024*1024/4=262144 个分片地址。用户下载该文件时,需要从数据库中读出这 262144 个分片地址,才能下载完该文件。不管是每一个分片地址作为一条数据库记录存储,还是所有分片地址都放到一条记录中,都将导致大量的数据库读取消耗。而过高的读取消耗,对数据库的稳定性将带来潜在风险。文件越大,带来的风险也越大。


解决这个问题最简单的方法,就是对文件大小进行限制,不允许上传过大的文件。当然,专业的分布式文件系统,一般都不会这么干,而是试图从技术上解决这个问题。解决这个问题的办法,又分为两种:


一种是类似腾讯 TFS 的办法,思路是对分片地址的存储进行优化,把若干个连续分片的地址,打包在一起,存储为数据库的一条记录。设计一条主记录,该主记录存储文件名和各打包分片记录的key。这样一来,主记录的尺寸将非常小,方便从数据库中读取;而打包分片的记录,则可以在在随后需要时,从数据库中读取,好处在于读取一条打包分片记录,能够获得很多分片,减轻了数据库读取的压力。


而 UCloud 的 UFile ,则采用一种更为简单的方法。系统只需要存储一条分片记录信息;这条记录的大小跟文件的大小基本无关,不管文件是1KB的小文件,还是1TB的大文件,该分片记录信息大小都是差不多的。下载时,只要根据文件名获取到文件的分片记录信息,通过自身的算法,即可得到该文件所有分片的地址。由此可见该方法,不是减少,而是完全消除了超大文件对元数据系统造成的风险,可谓是分布式文件系统技术领域的 “乾坤大挪移”。


当然,UFile 目前对用户上传的文件,还是会有限制,目前为5TB,和 AWS 持平。这主要是出于分片上传和断点续传的考虑。当用户在往 UFile 上传一个大文件时,一般会选择分片上传的模式,如果由于网络原因,上传失败,那么客户端可以续传未完成的分片,最终完成整个文件的上传。UFile 会在数据库中,记录每一个分片的上传进度信息,从而保证继传的进行。假如上传的文件大小没有上限,那么数据库中,分片记录的量将会非常大,进而给系统造成一定的风险。出于这方面的考虑,UFile 将文件大小限制在 5TB 的级别,一方面保证用户上传文件大小几乎不受限制;另一方面也防止一些异常情况的发生。


总之,从技术角度来分析,网盘对上传文件大小的限制,完全没必要控制在4GB或者10GB这样的量级,是完全可以放开的。


因此,必然有技术之外的原因。要回答这个问题很难,因为我不是网盘界的业内人士,身边也没有做这块的朋友。在这里提供一种自己的猜想:会不会是跟禁止高清视频的分享有关。分析一下主流网盘在13年的4GB限制, 和16年的10GB限制, 我们会发现, 这几乎就是13年和16年一部主流的高清电影文件的大小(13年720p的清晰度,和16年1080p)。研究下国内网盘过去几年的发展,你会发现通过网盘来分享和下载视频资源其实是国内网盘的主流需求,抓住这一点并大胆给与用户满足的产品,如百度网盘迅速做大;而老老实实模仿 dropBox 的产品,如腾讯微云,最终却以落寞收场(最后不得不将产品的主打功能,从文件同步,转向为文件存储,并将上传文件的1GB限制扩大)。


然而,视频分享和下载这个圈子,却始终是一个是非之地。从最早的BT网站的兴起到被封杀,到快播被查,以及各大网盘分享功能被限乃至于最近一些网盘彻底关张, 可以看到分享的动力和政策的打压始终缠斗不休。 缠斗的原因,则是我们每个人都心知肚明的敏感词视频和盗版。


因此,有可能正是在这种缠斗和博弈下,出现了对文件大小 4GB 和 10GB 的限制。将文件控制在这个大小,能够保证大部分刚上映或刚上线的电影不会被盗版然后迅速传播,从而影院票房和视频网站点击率和会员制能够得到保护。也就是说,这有可能是一个多方博弈的结果。


从另一方面来说,国内网盘沦落到要靠视频分享和下载才能提升用户量,无法实现 dropBox 站着把钱赚了的梦想,本质来说在于国内用户对信息化技术的利用程度还有限,还停留在热点信息消费的阶段,很少有能力产生长尾的、个性化的大文件数据。当然,这种情况也在逐渐改变。比如最近业余足球圈比较热门的,一个叫斑马帮的 app,能够帮助录制业余比赛视频,并制作集锦,每一个足球爱好者,可以通过这个 app 拥有自己参加比赛的视频,在足球场上记录下自己的足迹。相信随着互联网向生活和各传统行业的深入渗透,这种类型的 app 会越来越多。到时候,网盘界不仅有热门的视频,还有众多小众资源,构成漂亮的长尾,而这这是网盘盈利的基础。当这一天到来时,国内才可能有真正的 dropBox。


最后,再次推荐一下 UCloud 的 UFile。 前面提到,UFile 的单个文件上传上限是5TB。也就意味着,如果国内网盘不能够满足你超大文件的上传需求,可以尝试使用UFile,或基于UFile构建自己的网盘应用。 值得一提的是, UFile自带文件的秒传功能, 假如你要上传的文件,在UFile中存在,那么你的上传过程将迅速完成,此后该文件的下载和删除,和普通文件保持一致。点击这里,可以进一步了解:管理工具及SDK
UCloud – 专业云计算服务商
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值