首页 > 其他分享 >1T空间只是噱头而已! 网盘容量大战背后的技术秘密

1T空间只是噱头而已! 网盘容量大战背后的技术秘密

时间:2023-06-15 18:36:24浏览次数:46  
标签:1T 网盘 用户 空间 服务器 上传 技术秘密 1000


最近一段时间,各大网盘容 量大战红红火火,网盘的容量也由此达到了TB级。其实网盘产业一直以来都是互联网行业中最烧钱的之一。想想现在各大网盘如果真是给每个人都TB级的容量, 这个投入是巨大的,其实也是非常不经济的。那么各大网盘的聪明工程师们是如何从技术上解决BT大容量网盘的发展趋势和实际网盘资金投入控制这一矛盾的呢? 下面这篇文章转自Fatesinger博客,相信看完后你会有所了解。

  

  事实是这样的~

  我想要为每个用户提供 1G 的网络存储空间。

  如果服务器上有一颗 1000G 的硬盘可以全部为用户提供数据储存,如果每个用户分配 1G 的最大储存空间,那么能非配给多少个用户使用呢?

  你一定说是 1000/1=1000 个用户。

但 事实上你这么分配了,你会发现每个用户平时根本不会上传 1G 的东西将容量占的漫漫的,有多又少,但平均用户平时只上传 50M 的文件,也就是说,你 将 1000G 的硬盘分给 1000个 人使用,但只有效利用了其中的 50M*1000=50G 的空间,剩余 950G 的空间基本都完全浪费了。

  


  那么怎么解决呢?

   你可以变通一下,将这 1000G 的空间分配给 20000个 用户使用,每个人的上传上限容量还是 1G,但每人平时还是平均上传 50M 的数 据,那么 20000*50M=1000G,这下子就把宝贵的服务器上的存储空间充分利用了。但你又怕这样分配给 20000个 人后,万一某一刻人们突 然多上传点数据,那么用户不是就觉察出来你分给人家的 1G 空间是假的了吗?所以可以不分配那么多人,只分配给 19000 人,剩下一些空间做应急之 用。

  突然发现一下子将可分配的用户数量翻了19倍啊,了不起。



  那还有没有办法更加有效的利用一下呢?


   如果我有 1000个 以上的服务器,一个服务器上有 1000G 空间,那么我们个服务器上都要留下 50G 的空白空间以备用户突然上传大数据时导 致数据塞满的情况,那么我这 1000个服务器上就空出了 1000台*50G=50000G 的空间被浪费了,可惜。

  所以我们发明了

计存储集群

, 使得一个用户的数据可以被分配在多个服务器上存储,但在用户那看起来只是一个 1G 的连续空间,那么就没必要在每个服务器上预留出应急的空间了,甚至可 以充分的将前一个服务器塞满后,在将数据往下一个服务器中塞。这样保证了服务器空间的最大利用,如果某一刻管理员发现用户都在疯狂上传数据(在一个大规模 用户群下,这样的概率少之又少)导致我现有提供的空间不够了,没关系,只需要随手加几块硬盘或者服务器就解决了。

  好吧,这下子我们的服务器空间利用高多了,可以将一定量的空间分配给最多的用户使用了。



  但有没有更好的改进方案呢?


   管理员有一天发现,即使每个用户平局下来只存储 50M 的东西,但这 50M 也不是一蹴而就的,是随着1-2年的使用慢慢的达到这个数量的,也就是 说,一个新的用户刚刚注册我的网络空间时,不会上传东西,或者只上传一点非常小的东西。那么我为每一个用户都初始分配了 50M 的空间,即使将来2年后 他们会填满这 50M ,但这期间的这空间就有很多时浪费的啊。所以聪明的工程师说:既然我们可以分布式、集群式存储,一个用户的数据可以分布在多个服务器上,那么我们就假设一开始就给一个新注册的用户提供 0M 的空间,将来他用多少,我就给他提供多少存储空间,这样就彻底的保证硬盘的利用了。但用户的前端还是要显示 1G 的。

  工程师的这个点子,使得我在建立网盘初期能用 1台 1000G 的服务器提供了大约 1000000 人来注册和使用,随着注册的人多了,我也有钱了,也可以不断增加服务器以提供他们后期的存贮了。同时因为一部分服务器完了一年多购买,我的购买成本也下来了。



  那么…这结束了吗?


  若是邮箱提供商的话,这样的利用率够高了。但网盘就不一样了。

  聪明的工程师发现:不同于邮箱,大家的内容的附件绝大多数都是自创的和不同的。但网盘上大家上传的东西很多都是重复的。

  比如:张三 今天下载了一部《TOKYO HOT》上传上传到了自己的网盘上,李四在三天后也下载了一模一样的《TOKYO HOT》上传到了网络硬盘上,

随 着用户的增多,你会发现总计有 1000个人 上传了 1000份 一模一样的文件到你宝贵的服务器空间上,所以工程师想出一个办法,既然是一样的文件, 我就只存一份不久好啦,然后在用户的前端显示是没人都有一份不就行啦。当某些用户要删除这个文件的时候,我并不真的删除,只需要在前端显示似乎删除了,但 后端一直保留着以供其他拥有此文件的用户下载。直到所有使用此文件的用户都删除了这个文件我再真的将其删除吧。


  这样子随着存储的数据越来越多,注册的用户越来越多,其上传的重复数据越来越多。你发现这样的检测重复文件存储的效率越来越大。这样算下来似乎每个人上传的不重复的文件只能平均 1M/用户。这下子你可以提供超过 50倍 的用户使用您这有限的空间了。

  但伴随这使用,你又发现一个规律:

   张三上传的《TOKYO HOT N0124》和李四上传的《TH n124》是同一个文件,只不过文件名不一样,难道我就不能识别出他们是一个文件, 然后只将其分别给不同的用户保存成不同的文件名不久行啦?确实可行,但这要利用一些识别文件相同性的算法,例如 MD5 值等。只要两个文件 的 MD5 值一样,文件大小一样,我就认为它们是相同的文件,只需要保存一份文件并给不同的用户记作不同的文件名就好了。

  有一天你发现,因为每一个文件都需要计算 MD5 值,导致 CPU 负荷很大,而且本来一样的文件非要浪费带宽上传回来才可以检测一致性,能改进一下吗?


  

聪 明的工程师写了个小软件/.小插件,美其名曰“上传控件”,将计算 MD5 的工作利用这个软件交给了上传用户的点老来完成,一旦计算出用户要上传的数据 和服务器上已经存储的某个数据是一样的,就干脆不用上传了,直接在用户那里标记上这个文件已经按照 XX 文件名上传成功了。这个过程几乎是瞬间搞定了, 并给其起了个高富帅的名字“秒传”!



  通过以上这么多步骤,你发现本来你只能给 1000用户 提供网络空间的,这么多改进办法后,在用户端显示 1G 空间不变的情况下,近乎可以为 1000000个用户 提供网络空间了。

  这样若是您哪天心情好,对外宣传说:我要将每个用户的存储空间上限提升到 1TB。那么每个用户平均还是只上传 50M 数据,只有极个别极个别的用户上传了突破 1G 原始空间的数据,你会发现所付出的成本近乎是微乎其微的。

  辛勤的工程师还在为如何更有效率的利用服务器提供的磁盘空间在不屑努力和挖掘着……

  我隐约想到了无限容量的某虎邮箱~

  至于dropbox,人家才是真正的网盘,国内的云诺好像也是这样子的。


  其实我只想说一句,上传速度15KB/S我们都感动的哭了。。。。。

标签:1T,网盘,用户,空间,服务器,上传,技术秘密,1000
From: https://blog.51cto.com/u_16065168/6493961

相关文章

  • 【Windows】百度网盘桌面“同步空间”图标删除
    ✨百度网盘桌面“同步空间”图标桌面出现“同步空间图标”右键无法删除✨解决方案搜索注册表编辑器或者regedit在注册表编辑器中,编辑>查找:同步空间,删除相关项!注意:搜索出来同步空间相关项较多,如仅需删除桌面图标请直接定位到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Mic......
  • JDK11 官网下载(提供网盘下载资源)
    引言我们要学习Java语言去开发Java程序,就需要先下载JDK,JDK是Java开发工具包,包含了编译、运行Java程序所需的各种工具和资源,有Java编译器、Java运行时环境,还有常用的Java类库等。本文将详细介绍如何从官网下载JDK。一、Oracle(甲骨文)Oracle(甲骨文)公司是一家全球......
  • CAN 总线 MCP2551T-I/SN 收发器代替型号 DP2551-I/ST完全pin对pin兼容
    目前世界上使用最广泛的CAN收发器当属NXP(原飞利浦半导体)的各种收发器了。MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口。MCP2551可为CAN协议控制器提供差分收发能力,它完全符合ISO-11898标准,包括能满足24V电压要求。它的工作速率高达1Mb/s......
  • 在linux服务器上使用命令行下载百度网盘中的文件
    转载自https://blog.csdn.net/qq_37428140/article/details/124219739 1、安装bypy工具pipinstallbypy2、认证自己的网盘账号bypyinfo按照提示,在控制台和浏览器中完成认证3、授权成功后,我们可以在网盘中的“我的应用数据”目录下看到如下文件夹: 将需要下载的......
  • pkusc2023 d1t3
    整自闭了,快一个月后才想出来怎么做。设点\(i\)是1的概率为\(p_i\),定义\(P_i(x)=1-p_i+p_ix\)。那么\(p_i\)是\(i\)的儿子节点和自己的\(P(x)\)卷起来后取后一半的系数和。树上修改很魔怔,考虑ddp。维护每个点轻儿子和自己的\(\prodP(x)\),记为\(S_i(x)\),设一共有......
  • IG5236固件下载,梵想S770固态硬盘固件升级工具,IG5236固件版本3.W.J.1t
    回想自己购买的第一块固态硬盘还是在2013年,放到现在,差不多可以买1块14T或16T的机械硬盘,再或者可以买2至3块2T的固态硬盘了。近期正好又赶上存储颗粒供大于求,固态硬盘零售价一路走低,即使没有很强的购买需求,也让我忍不住出手购买。我选择了梵想S7702TB版本。产品主控IC是来自于InnoG......
  • 变速精灵+百D网盘
    首先找一下相对低一点版本的客户端,比如7.26.10https://issuepcdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.26.0.10.exe安装后,将AutoUpdate目录里的Autoupdate.exe改名,或者在防火墙禁止其出、入站。运行客户端,在任务管理器找到共三个PID(进程号)。安装CheatEngin......
  • AList – 聚合阿里云盘、百度网盘、PikPak、WebDav 等 18 款网盘:文件预览、上传/下载,
     Alist是什么?AList–聚合阿里云盘、百度网盘、PikPak、WebDav等18款网盘:文件预览、上传/下载,直接播放视频他的最大用途就是直接播放网盘视频,并且是通过你喜欢的播放器:AlistHelper-图形界面的Alist:聚合加载115/阿里云盘/百度网盘/OneDrive/迅雷/夸克/等20+网盘文......
  • SVC_1trc3tsc:基于MATLAB/Simulink的静态无功补偿器SVC的仿真模型。
    SVC_1trc3tsc:基于MATLAB/Simulink的静态无功补偿器SVC的仿真模型。其由一台耦合变压器、一个晶闸管控制电抗器组(TCR)和三个晶闸管投切电容器组(TSC1、TSC2和TSC3)组成。仿真模型附加一份仿真说明文档,便于理解和修改参数。仿真条件:MATLAB/SimulinkR2015b,ID:8280649580346912......
  • ASEMI代理ADUM3211TRZ-RL7原装ADI车规级ADUM3211TRZ-RL7
    编辑:llASEMI代理ADUM3211TRZ-RL7原装ADI车规级ADUM3211TRZ-RL7型号:ADUM3211TRZ-RL7品牌:ADI/亚德诺封装:SOIC-8批号:2023+引脚数量:8工作温度:-40°C~125°C安装类型:表面贴装型ADUM3211TRZ-RL7汽车芯片ADUM3211TRZ-RL7特性符合IEC61000-4-x标准的增强系统级ESD性能高温操......