百度网盘:4G大文件高速秒传原理分析,优劣及隐患

  前阵子,提供免费申请100G空间,当时一则出于好奇,二则自己移动硬盘由于使用了BT,悲催的经常出现报错,就想借此机会将文件传到百度上暂存下,腾出空间好好整理下移动硬盘,就也弄了一个帐号。100G,加上原来的5G,一共105GB到手,正好今天有时间,就准备将移动硬盘数据拷贝上去了。打开百度云-网盘之后,出现下面图:

百度云网盘高速上传提示

注:此图片来源网上,本地的截图由于已经使用了极速控件,没法操作。

下载安装之后,就是个IE插件,然后我们来体验下吧,体验截图如下:

极速秒传的截图.

前三个文件,状态开始是文件比对...,而后,立马上传成功,果然秒传啊,心想要按这个速度,上传所有的文件基本上就是分分钟的事情啊,结果,在第四个文件的时候,它开始慢悠悠的给我上传了,速度稳定在60Kb左右,汗!这速度,要传完所有的文件,那是得猴年马月?这也算极速秒传。石化片刻之后,我终于明白它这极速秒传是怎么个一回事了。在让我下载的插件无非就是个工具,然后将我本地文件和服务器已有文件进行比对,如果有,就直接使用服务器文件 —— 这就是秒传! 没有的文件,就慢悠悠的给你上传。

好吧,如果按照他这个秒传的概念,我们也非常容易的实现秒传功能,就一个文件HASH嘛。那趁着现在还在上传这档口,来自己设计一个简单的秒传架构吧。

原理篇

要实现,最核心的就是建立服务端与客户端的文件比对功能,这个比对当下可以用的有MD5这样的算法或者其他HASH算法。其步骤如下:

1. 让用户下载客户端,这个可以是浏览器插件,也可以是客户端软件 —— 百度这里是IE插件;

2. 在文件上传之初,将本地文件进行HASH计算,得出文件指纹;

3. 将文件指纹数据上传到服务器;

4. 服务端将文件指纹和现存的文件指纹进行比对,并返回比对结果给客户端;

5.客户端获取比对结果;

6. 如果是比对成功,则说明服务端已经有同样的文件存在,则直接将文件名和指纹及文件标识符一并上传到服务端,而服务端在接受到之后,只是将文件名存放在客户的名下,文件则是映射到原有文件的路径中,返回秒传成功信息;

7. 如果比对不成功,就变得和普通上传并无二致,老老实实的通过HTTP的方式,将文件1比特,1比特的上传到服务端。

好吧,这就是玄乎的文件秒传了。至于为什么要4GB的限制,这个个人初步认为是因为指纹计算也是需要消耗资源,如果文件过大,在计算指纹的时候,其占用资源也会相对较多,可能会造成一定的影响。真相具体为什么,还有请懂行的指点。

优势

  1. 对于服务端:进行文件的服务端比对,而后进行文件映射的这种方式,对于大型的存储来说,由于在服务端只存在一份文件实体,因此,对于系统的存储消耗将能极大的降低。特别是在文件数量达到海量,并且有很多重复文件时(多用户各自保存文件时),其效果更佳。

  2. 对于传输的带宽:对于用户来说,由于服务端的海量文件,自己传输的如果是其中已存在的文件时,能够极大的降低带宽的占用情况。

劣势

  由于要实现秒传,并达到最优的效果,核心是要求服务端保存海量文件,而且及时所有用户将文件删除,服务端为了在下次实现秒传,都必须将文件保存在服务端,而不能进行删除。如果未被映射的文件数量巨大,这势必会增加存储成本。

隐患

  也许秒传给客户带来了便利,让我们感觉良好。但我们从秒传的原理中也不难发现其中的。由于文件必须在服务端保留,因此,如果你传输到服务端的文件包含隐私,那么,一旦上传完成,你的隐私就永远的存在于服务端了,这就很难保证你的这些隐私在将来不会泄漏。如果真要使用这么一些个服务的时候,我们需要仔细的分析其中的风险。并且做出必要的决断。 —— 至少,在我看到这个功能之后,我当即就决定,只将自己的一些电影文件和其他不涉及隐私文件上传到服务端,而涉及到隐私的,或稍微敏感些的其他文件,我将用其他办法来处理。

  没有软件能够保护隐私安全,为了自身的利益,他们只会在最大的可能范围能截取客户隐私,要保护这些敏感信息,只能靠你自己!

Saturday, November 24, 2012 | 其他技术 万象漫谈

文章评论

  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    可以考虑对文件添加一个引用计数,每次有一个用户添加了该文件则计数+1,删除则-1,为0的时候则清空记录并删除文件。这样子一来算是能够解决你提出的那个安全隐患,另外还可以通过引用计数的变化来在后台分析文件的热度。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • MC
    • 3/16/2013 9:25 PM
    楼上的方法并不能真正解决安全隐患的,+1,-1的方式反而可能会让系统丧失极速上传的优势。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    我觉得应该使用了类似linux下软连接的技术实现秒传,并且一定有其他技术来实现没有该文件的引用后释放存储的功能。

    而关于隐私的问题可能存在隐患,但不确定。
    假如3亿人都上传了N个hash值为唯一的4G文件,然后又把文件删除了。 云端如果在一定时间内不释放该存储的话,就算海量存储也会撑爆的。

    没阅读过云端代码,以上为个人猜测,仅供参考。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    1. MD5算法会产生碰撞,这种算法不适合单独的应用在云文件急速上传技术中。
    2. 隐私是基于碰撞和文件未删除两个问题。文中只说到了不删除。
    3. 为了节约资源,相信会对没有了引用的文件进行清理的。但对于楼上Hash值唯一的N个大文件的处理问题,要到1.2EB这个数量级,真正的问题不仅是在存储上,传输上也是个问题,按机房带宽是:1GB/s,一年24小时不间断上传才31PB左右,那得将近40年才能传完,更别说现在的带宽大部分还是在100MB这个档次上呢。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    很受教,学习了。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • wk
    • 1/21/2014 3:09 AM
    一个物理文件多个连接的功能在大部分他的 Linux 文件系统都有支持。 当最后一个连接被删除的时候物理文件也会跟着被删除。 这些都不是新技术, 象 time machine 这种带 snapshot 功能的备份都是用文件系统这个特性来达到节省空间的方法。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • hello
    • 2/24/2014 6:22 AM
    单个文件4G不是针对秒传的文件,而是针对非秒传的文件,而且还可以赚钱(VIP单个文件上限20G)
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • ding
    • 3/27/2014 3:39 PM
    那个一年传机房31PB左右的说法不敢苟同,现在分布式存储的带宽能力是100MB*N的
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • ding
    • 3/27/2014 3:41 PM
    幽幽幽幽比
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    @ding
    是的,为了解决这个瓶颈,是要做分布式方案,当时的讨论是基于单入口带宽。
    大文件的存储中,一般只进行Hash集中存储,文件异地存储,以节省带宽资源。
    在提及到的数据中,1.2EB是根据前文推算,这个数量级,即使是现在一般的分布式存储也难以处理的,按31PB的量来算,要一年存储完这么多的数据,大概要40个节点都是1GB的入口带宽,这是不现实的,一个普通的机房也就10几20G左右。当然这些都是理想状态下的一个计算而已,实际中碰到这种情况的可能性很小。
    云存储的一个好处是随着时间推移,文件积累越来越多,真正需要传输的会越来越少。
    ——像百度这种,不知道在带宽空闲的时候自己去获取影片或其他网络公共资源,方便未来传输便捷。
    TIPS:为了回答这个问题,特地去百度网盘看了一下电影的存储,看下来好像用的最多的是南京和青岛两个节点(是不是只有这两个节点就不知道),这样看来,压力远没有我们理论上讨论的这么大,呵呵
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    MD5值,只要文件不一样,不会有相同的,涉及到你隐私的文件,别人从何得来?
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    @好爱好
    前面讨论过,MD5值是有碰撞的,也就是说,在理论上也可能出现不同文件一个MD5值。
    当然安全隐患不仅于此,网站本身的素质和安全性影响也极大。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    • Jack
    • 4/22/2015 11:07 AM
    一般的做法不只是MD5而已,还包括sha1,sha256等,多重校验下来。碰撞的概率太低。顺便说一句,优先级第一的还不是hash,而是文件大小,文件大小是第一要素。如果文件大小不同,文件必然不同。。。,所以大文件有时候文件大小相同的概率太低。至于所谓一次计算大个文件需要的计算资源太多,这种解决方案是,将文件分块,随机计算某些块即可。对比文件大小和多个块的几种不同的hash值(md5,sha...),基本可以保证不重复了。
  • # re: 百度网盘:4G大文件高速秒传原理分析,优劣及隐患
    明白了,就是如果网上已经有了实际上就是没有上传,保存的就是人家的一个链接

发表评论

Please add 2 and 3 and type the answer here:

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。