本文主要是介绍云存储——别说你还没用过网盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是云存储
云存储(cloud storage)是从云计算中衍生而来的一个概念,严格来说是属于云计算的一部分,与云计算一样都十分抽象。
什么是云存储?国内比较通行的定义为:
云存储是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
是不是更晕了?
维基百科的定义相对通俗,但依然比较专业:
Cloud storage is a model of computer data storage in which the digital data is stored in logical pools. The physical storage spans multiple servers (sometimes in multiple locations), and the physical environment is typically owned and managed by a hosting company.
云存储是一种将数据存储在逻辑资源池中的计算机存储模型,真实的存储设备横跨多台服务器(有时还位于多个不同地点),通常由服务器商提供与管理。
其实,要捋清云存储这个概念,关键是区分它在技术与服务两个方面的体现。
云存储技术躲在后台,包罗着集群、虚拟化、分布式、并行计算、灾备等大量高深的技术,任何一个铺开了讲都可以单列一篇文章乃至单成一部著作,而普通用户根本接触不到,所有了解都是纸上谈兵,这正是云技术令人费解的主要原因。
云存储服务则被摆在前台,是与我们息息相关的,看得见摸得着的(好像也摸不着……),主要面向企业用户和个人用户。个人向的云存储主要在SaaS[1]级,表现为云笔记、云音乐、在线Office、网盘等丰富多彩的产品。企业级云存储则IaaS和SaaS皆有,前者表现得很像单纯的本地硬盘,你甚至可以直接把它格式化,后者主要针对中小企业,产品与个人向的云存储类似,不过更注重协同办公的功能。
说到底,与传统的存储方式不同,云存储可以把自己的数据存放在服务器上的一片存储空间中,这些数据就像飘在天空的白云,你只需要一个账号,就可以随时从云端获取。
为什么要用云存储
也许有人会说:我东西一直保存在自己的手机和电脑上,既私密又安心,也不没什么不便,为什么还要用云存储呢?
其实把数据放在云端,和我们平时把钱存在银行的道理是一样一样的。
方面 | 银行储蓄 | 云存储 |
---|---|---|
信任前提 | 钱存到银行主要建立在对银行的信任之上,即相信银行不会倒闭,相信银行即使被抢劫也不会影响到自己的账户余额。 | 当我们信赖某个云存储平台,即相信它不会轻易下线、不会轻易丢失数据,即使下线也会提前通知用户进行备份,便自然会毫不犹豫将资料上传。 |
可靠性 | 很少有人会把大量现金屯在自己手上,除非是害怕查账的贪官。 | 云存储服务器端的容灾能力远比我们想象得强大,即使某块存储区域被物理损坏也照样可以从其他区域恢复完整数据,这是我们自己的硬盘所做不到的。 |
便携性 | 银行储蓄本质上也是云,让你一卡在手走遍神州。 | 经常需要多地点办公的朋友不再需要到处背着沉重的笔记本电脑,这是云存储最明显的优势。 |
隐性价值 | 银行的利率远比不上良莠不齐的小型借贷平台,但我们往往甘愿放弃这部分利息。 | 付费云存储的空间价格远高于U盘和移动硬盘的售价,但用户仍然愿意付费。 |
时代潮流 | 如今再怎么不识字的老奶奶都有自己的银行账户,主动也好被动也罢,她们身处这个时代。 | 当你以为自己始终呆在本地存储的舒适区,其实已经享受到了云存储的便利,手机数据的自动云备份就是一个例子。 |
最想说的还是网盘
在所有云存储产品中,最具代表性、对个人而言最有价值、最值得一说的当属网盘。
网盘作为一种类似于「云硬盘」的在线存储产品,什么文件都能存放,往往被大家误认为和云存储是一个意思。经过上述分析我们终于搞清楚,网盘只是云存储的一种应用,是云存储产品家族中的一员。
早在1983年,美国的CompuServe公司就推出了类似网盘的产品,那时每个账号的存储容量是128KB。但网盘真正的蓬勃发展得从2011年算起,这一年的6月6日,乔布斯在苹果举世瞩目的WWDC 2011开发者大会上发布了iCloud产品,它为每个用户提供了5G容量,用于同步、备份个人账号下的多台苹果设备数据。随之而来的,就是在此之前与之后出现的国内外各大网盘产品的百花齐放。
好几个年头过去了,在版权纠纷、运营成本、用户体验等多方面因素的影响下,各家产品已经经过了好几轮的淘汰与新生,如果你还没用过网盘,真该好好地自我检讨了。即使你不是个收藏控,也对冷门资源毫无兴趣,至少也该利用网盘备份一些自己的资料、和朋友共享一些内容。
网盘最强大也是最有意思的特点,就是「秒传机制」——如果云端已经存在某个文件,那么不论网速如何,我们将其上传至网盘的耗时都是秒级的。
▌内容寻址存储机制
这一能力得益于2003年开始逐步兴起的一种文件存储机制——内容寻址存储(CAS: content-addressable storage)。平时我们在自己硬盘里定位一个文件需要知道它的层层路径,而在CAS中,我们可以根据文件的内容定位到它。
确切的说,是文件内容的代号,CAS为每个文件编上唯一的代号。任何两个文件,如果它们的内容不同,其代号也就不同;反之,任何文件的副本如果内容没有改动,其代号与原件必然是相同的。CAS不会存放副本,所有你复制粘贴出来的文件都只是指向原件的链接。
据美国加州大学的伯克利分校和存储领域的EMC公司调查显示,全社会每年产生的信息中超过75%属于固定内容,即产生之后就几乎不再变动。比如最占空间的音视频文件,除了专业的后期制作人员,一般谁会去修改它们呢?这些庞大而笨重的文件却往往被复制得最多。CAS可以有效地避免其副本造成的空间浪费,网盘运营商也得以少买N块硬盘。
那么如何给文件编上全球唯一的代号呢?最简单的做法就是从1开始递增,如果有一亿个文件,就从1编到100000000,好像没毛病,但不能实现这一亿个文件中的去重,副本也有了自己的编号。
只有真正根据内容进行编号才是王道,但如何让代号因内容不同而不同呢?高明的数学家想出了哈希算法(hash function),计算出来的文件代号就称为文件的哈希码(hash code)。
哈希算法千千万,举个简单的例子,取余运算:
不论多长的数,经过对7取余,最终结果都是一个小于7的非负整数。在这个算法中,明显存在着不同数据的哈希值相同的情况,比如12和19910315的哈希值都是5。文件的本质就是一串长长的二进制数,这个只能生成7个不同哈希值(0~6)的算法,只能标记7个不同的文件。
CAS所采用的算法明显要复杂得多,以著名的MD5算法(信息摘要算法第五版)为例,任何文件经过MD5运算,均生成一个长度为128位的二进制数,其哈希值就可以有2128(约340万亿亿亿亿)个。如果以MD5码作为文件的唯一代号,那么基本允许全球(按70亿人口算)每人拥有近5万亿亿亿个互不相同的文件。这些都是天文数字,以目前的情况看,世界上的文件再多,也不可能达到这个数目。类似MD5的复杂算法已经可以保证绝大多数文件的哈希值都不会撞车,但为了以防万一,网盘往往偏向于使用混合型的哈希算法。[2]
▌秒传原理
在文件系统允许的情况下,一个文件的大小可以是任意的,可以只有几KB,也可以有好几十GB,但其所对应的哈希值总是只有那么长(如MD5码永远只有128位),在网络上,传输哈希值比传文件本身要便捷得多。
基于CAS的网盘就是利用这一原理,在保存文件的同时保存着它们的哈希值。在用户上传文件时,先计算文件的哈希值,在云端搜索是否存在相同的哈希值,若存在,则说明服务器上已有这个文件,就不需要真正地上传,只需在用户的网盘里提供一个链接,让用户误以为文件已经上传成功(其实上传的仅仅是这个文件的哈希值)。
有了这一功能,我们备份电影、动画、游戏的时候,就无需忍受蜗速的上传。硬盘里放不下,又舍不得丢掉的资源,都可以尽情地留在网盘。而别人分享的文件,则可以瞬间转存到自己盘里,想什么时候下就什么时候下,不怕丢失。
利用同样的原理,部分网盘所提供的离线下载功能在离线热门资源时,可以瞬间将BT磁链和种子中的文件获取到用户的网盘里。
虽然因为版权问题,网盘的能力往往不能充分发挥,但即使仅用作个人的资料仓库,也十分方便。别再怀疑,一起开启属于自己的云端办公时代吧!
参考文献
- 李逦. 浅析云计算背景下云存储的优势与劣势[J]. 计算机光盘软件与应用, 2013(23):18-19.
- Wikipedia. Cloud storage[EB/OL].
- 张继平. 云存储解析[M]. 北京: 人民邮电出版社, 2013.
- Apple. Apple Introduces iCloud[EB/OL].
- Wikipedia. Content-addressable storage[EB/OL].
相关阅读
新时期的资源帝战术研讨
道高一尺,魔高一丈——用技术破除网盘分享限制
-
关于IaaS和SaaS,将在《云计算》一文中介绍。 ↩
-
事实上,广泛使用的MD5和SHA-1算法已经被山东大学的王小云教授破解,根据她提出的方法,可以生成两个内容不同但哈希值相同的文件。网盘如果使用这些被破解的哈希算法,后果不可想象。 ↩
这篇关于云存储——别说你还没用过网盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!