网络云盘的存储机制

之前对于网络云盘的存储机制有过猜测,今天看了网上的博文分析(下面贴有原文),大部分证实我的猜想。总结来说,目前国内的网络云盘的存储机制主要从以下三点着手:

  1. 对于用户使用习惯和行为模式进行调研和分析,可以大致分析正常用户一天/一月/一年的平均存储容量大小需求;
  2. 采用存储集群(云计算技术解决)和分布式存储等技术来实现用户文件的存储,用以解决用户突发性存储需求和需求缓慢增长的问题;
  3. 针对用户重复性的存储的问题,采用计算存储文件MD5值并只保存唯一文件的方式解决,通过诱导用户使用客户端上传来分担计算MD5的性能负荷。
网盘的存储原理

原文链接:http://club.mil.news.sohu.com/it/thread/1r0702kmyo0

之前国内各家大公司之间的网盘大战吵的沸沸扬扬,很多同学都在自己的博客上说今天领取了XXXT容量,1元XXXX,免费升级到XXT之类的,鸡冻你没发现dropbox这种网盘鼻祖却始终提供那么点容量,你们就没有想到过为什么么?我只想说,图样图森破啊~
事实是这样的~
我想要为每个用户提供 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 原始空间的数据,你会发现所付出的成本近乎是微乎其微的。
辛勤的工程师还在为如何更有效率的利用服务器提供的磁盘空间在不屑努力和挖掘着......

时间: 2024-09-29 17:54:22

网络云盘的存储机制的相关文章

Jsp+javaBean+mysql的网络云盘

Jsp+javaBean+mysql的网络云盘 一文件上传:利用jspSmartUpload.jar shangchuan.jsp <%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %> <%@ include file="config.jsp"%&g

文件上传、下载 -- 网络云盘案例

package cn.gudan.yunpan.web.servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.sql.SQLException; import javax.servlet.ServletException; import

360企业云盘需求调研,包括定价

天天抽奖.文件时光机.文件回收站.文件去重.秒传.文件显示大小,这些功能要保留,因为其他云盘都没有这个功能,还是很占优势的.价格还是希望便宜一点,因为绝大多数都是个人用户转型过去的,100元/年最佳,也可以划分等级购买网盘容量. http://bbs.360.cn/thread-14645169-19-1.html 1.按照多个功能区块来组合套餐,而不是简单的阶梯式定价,比如容量模块.流量模块.增值服务模块等.这样客户可以按需定制,节省资源.2.增强同步功能,至少达到360云盘同步版的功能(如选

校园云盘 享你所想

猇亭区第一小学举行校园云盘培训 4月10日,猇亭区第一小学的多功能教室里,一场校本培训正在举行.再瞧瞧咱参会的各位老师们,人手一部手机,低头摆弄,个个变身为手机党.低头族.大家可别误会,今天的主题就是手机版校园云盘使用培训.随着培训老师覃振刚的讲解,各位老师按图索骥,快速操作,下载.安装.登录.各位老师进入校园云盘空间,领到了自己的"一亩三分地".老师们边操作,边感叹:有了自己的校园云盘,今后咱们的资源将更丰富,工作效率也将更高效! 随着教育现代化的推进,智慧校园.数字校园的不断升级,

校园存储云盘,你知道怎么选择吗?

许多高校网络信息中心已充分认识到校园云盘在信息存储和数据备份的重要价值,以北京.上海.广州.深圳等一线城市为例,部分高校网络中心已将校园云盘服务定位成学校信息化基础设施的"标准配置",许多中小学校也开始探索云盘在教学系统的应用. 高校教学科研与日常工作会产生大量数据,这些数据的实时更新与存储获取是高校对于云盘服务的主要诉求.由于海量数据的产生,这类问题将影响高效教学.管理.科研信息化和数据化发展. 调查显示,国内高校在建设校园存储云盘时普遍倾向于能够解决存储备份.内容分发与回收.教学管

网络、云盘下载文档打不开

网络.云盘下载文档出现如下提示:解决方法:点击"文件"---"选项"--"信任中心"--"信任中心设置"--受保护的视图--取消勾选"为来自Internet的文件启用受保护的视图"--确定 原文地址:http://blog.51cto.com/gaokui/2149321

学校私有云盘(私有云存储)解决方案

育网云盘核心功能简介 一,我们的是全平台系统(web浏览器端,pc客户端,安卓端,苹果客户端,微信端) 支持PC客户海量文件上传下载,系统稳定.  二,我们的PC客户端是按百度云盘,360云盘一样的,完全底层win系统C++开发,并且可以按,学校名称进行私人定制,和在线自动升级服务. 三,我们有强大的转码集群,支持多台服务器部署,可以支持海量文件在线预览功能. 多数云盘厂家利用openoffice转码,数据量大了之后,云盘系统会频频死机.我们基于底层win系统C++开发的,所以平台运行更稳定. 

电子政务私有云盘系统建设必备-Mobox政务盘

序言 这几年,智慧政务已经成为了政府行业IT建设发展的重要进程.传统办公方式信息传递速度慢.共享程度低.查询利用难,早已成为政府机关获取和利用信息的严重制约因素.建立文档分享共用机制,加强数据整合,避免信息孤岛完成信息系统互联互通.信息共享和业务协同已经成为智慧政务私有云盘系统建设的重要任务. 结合硬件性能提升.云计算.大数据.移动.社交的发展趋势,政府行业在建设智慧政务私有云盘系统的进程中存在以下问题: 存在大量的非结构化数据 随着政府行业新业务不断上线,例如:数字化法庭系统.头像识别系统.社

【免费公测】阿里云SSD云盘,不仅仅是IO提速10倍

今天很高兴为大家介绍最新的ECS存储服务:SSD云盘. SSD云盘基于全SSD存储介质.利用阿里云飞天分布式存储技术,提供数据可靠性99.999%的高性能存储:该产品具备以下特点: l  高性能:单个SSD云盘最高提供10000随机读写IOPS.160MB/s吞吐量的存储性能: l  高可靠性:SSD云盘采用分布式三副本机制,提供99.999%的数据可靠性: l  每GB提供30 IOPS:每GB容量提供30个随机IOPS能力,最大提供10000随机读写IOPS性能:比如100GB的SSD云盘,