网盘是个啥

    前后已经try过百度、360等网盘。刚用的时候觉得这些互联网公司真尼玛有钱。一个用户给几个T甚至十几T几十T的空间,这得要多少硬盘?!

    结果一次网络测速让我一下了解了这些网盘是如何设计滴。话说这次在泰国出差,这个鸟不生蛋的正经发展中国家。首都曼谷条件和中国县城差不多。电线架在你的头顶上,满大街的摩托车。但是网速却很是不错,目测wifi到桌面有1MByte。心生一念想测试一下上行速率。于是找了个centos的ios文件6个G。用360网盘上传,没想到尼玛的秒传了。哥当时惊讶了,网速再快硬盘copy也要点时间吧。还好哥好歹做了那么多年的工程师,很快从惊讶中寻找理智的答案。senconds later I got the answer

    网盘首先不是用户个人的独立存储空间,而是一个文件数据库+关系数据库,关系数据库用于保存用户信息,用户目录,用户文件名以及该文件的md5值等信息,更高级一点再加上权限、共享等控制。而文件数据库则用户保存所有用户的上传文件以及这些文件的md5。当用户需要上传文件时,首先在本地计算该文件的md5值,云端查找是否存在此md5的文件,如果存在则不需要实际上传该文件,在关系数据库中插入一条文件记录即可。但是上行可以省,下行就不行了,想要下载文件就必须真刀真枪的下载。这就是所谓的好借不好还啊。

    其实想想网盘的相关技术已经在我们身边存在了很久,被宅男们热爱的迅雷、bt等都是这种类型的技术,只不过下载搜索没有将这些资源用文件服务器集中存储。差别仅仅是文件服务器以及数据的有效性等具体业务细节。

你可能感兴趣的:(网盘是个啥)