第12章 云存储
Google、Amazon、Microsoft等国外互联网巨头为我们描述了云计算的美妙场景:当云计算时代到来之时,不必在你的计算机上安装各种各样的软件,只需要访问“云”就可以了,互联网巨头将会像提供水电煤一样提供随时可用的计算能力。云存储是云计算的存储部分,并且可以作为一种服务提供给用户,任何经过授权的合法用户都可以通过网络访问云存储,享受云存储带来的便利。云存储是随着互联网和云计算逐步发展起来的,从大规模系统软件架构的角度看,云计算后端架构的难点集中在云存储。本章首先对云存储做一个初步的介绍,接着介绍Amazon、Google以及Microsoft的云平台整体架构。
12.1 云存储的概念
云存储是在云计算概念上衍生、发展出来的一个概念,它除了可以节省整体的硬件成本(包括电力成本)外,还具备良好的可扩展性、对用户的透明性、按需分配的灵活性和负载的均衡性等特点。近年来,虽然已经有很多公司推出了云存储产品,包括Amazon S3、Microsoft的Azure、Google AppEngine中使用的Datastore,以及Google Cloud Storage等,但是到目前为止,云存储并没有一个明确的定义。本章给出一种定义,供读者参考。
云存储是通过网络将大量普通存储设备构成的存储资源池中的存储和数据服务以统一的接口按需提供给授权用户。
云存储属于云计算的底层支撑,它通过多种云存储技术的融合,将大量普通PC服务器构成的存储集群虚拟化为易扩展、弹性、透明、具有伸缩性的存储资源池,并将存储资源池按需分配给授权用户,授权用户即可以通过网络对存储资源池进行任意的访问和管理,并按使用付费。云存储将存储资源集中起来,并通过专门的软件进行自动管理,无须人为参与。用户可以动态使用存储资源,无须考虑数据分布,扩展性,自动容错等复杂的大规模存储系统技术细节,从而更加专注于自己的业务,有利于提高效率、降低成本和技术创新。云存储具有如下特点:
●超大规模。云存储具有相当的规模,单个系统存储的数据可以到达千亿级,甚至万亿级,如2011年Q4 Amazon S3存储的对象个数已经达到7620亿个。
●高可扩展性。云存储的规模可以动态伸缩,满足数据规模增长的需要。可扩展性包含两个维度:第一,系统本身可以很容易地动态增加服务器资源以应对数据增长;第二,系统运维可扩展,意味着随着系统规模的增加,不需要增加太多运维人员。
●高可靠性和可用性。通过多副本复制以及节点故障自动容错等技术,云存储提供了很高的可靠性和可用性。
●安全。云存储内部通过用户鉴权,访问权限控制,安全通信(如HTTPS,TLS协议)等方式保障安全性。
●按需服务。云存储是一个庞大的资源池,用户按需购买,像自来水,电和煤气那样计费。
●透明服务。云存储以统一的接口,比如RESTful接口的形式提供服务,后端存储节点的变化,比如增加节点,节点故障对用户是透明的。
●自动容错。云存储能够自动处理节点故障,从而实现运维可扩展,保证高可靠性和高可用性。
●低成本。低成本是云存储的重要目标。云存储的自动容错使得可以采用普通的PC服务器来构建;云存储的通用性使得资源利用率大幅提升;云存储的自动化管理使得运维成本大幅降低;云存储所在的数据中心可以建在电力资源丰富的地区,从而大幅降低能源成本。
综上所述,云存储是一种弹性、低成本、高利用率、透明的并能满足用户需求的服务,它采用友好的Web界面与用户进行交互,提供数据存储、数据保护、数据管理等功能,并使用用户身份认证机制来验证用户身份的真实性与唯一性。
云存储相关的概念还包括云存储系统、云存储技术、云存储服务等,图12-1说明它们之间的关系。
图 12-1 存储设备、云存储技术、云存储系统、云存储服务的关系图
云存储系统由大量的廉价的存储设备(一般为普通PC服务器)组成,融合了分布式存储、多租户共享、数据安全、数据去重等多种云存储技术,为用户提供灵活的、方便的、按需分配的云存储服务。可以看出,云存储技术的核心在于分布式存储。
在大数据时代,个人用户成为数据的主要创造者,它们贡献了海量的用户行为数据、关系数据、无线互联网中的地理位置数据、交易数据、用户创造内容(User Generated Content,UGC)等。这些数据增长很快,传统的存储技术在成本、可扩展性等方面都无法满足海量数据的快速增长需要。云存储是传统存储技术在大数据时代自然演进的结果,相比传统存储,云存储具有如下优势。
(1)可扩展性
传统存储不具备自动扩展能力,数据量增加时,往往要求管理员手工执行大量的管理操作,比如重新划分数据,停机拷贝数据等才可以加入新的存储设备。
云存储具有良好的扩展性,可以使用大量的普通存储设备,存储方式灵活多样,可以根据业务需求的变化、用户的增减和资金的承受能力,随时调整存储方式。云存储只需对虚拟化后的存储资源池进行统一的管理,即可实现按需使用、按需分配、按需维护。
(2)利用率
传统存储对资源的利用率非常低,对存储资源的分配通常是静态的,即参考用户的估计值对存储设备划分成分区或卷,以分区或卷为单位将存储资源分配给用户。由于用户估计值的偏差或者用户需求动态的增减,这样的分配方式会导致一部分存储资源可能长期处于闲置状态,而这些闲置的存储资源又无法提供给其他用户。
而云存储对资源的利用率非常高,因为云存储采用动态的方法分配存储资源。另外,云存储对资源的管理也十分的弹性,如果用户的某些资源处于闲置状态,云存储可以将这部分资源进行回收,动态地分配给需要更多资源的用户。
(3)成本
传统存储的投资成本和管理成本都十分昂贵。当使用传统存储时,有时很难提前预测业务的增长量,所以会提前采购设备,很容易造成设备的浪费,存储设备并不能得到完全使用,造成了投资浪费。另外,传统存储的管理员需要管理多种类型的存储设备,不同生产厂商生产的存储设备在管理方式及访问方式又不尽相同,因此管理员需要对各种产品都加以了解,增加了管理的难度及人员的开销。
而云存储可以有效降低投资成本和管理成本。云存储具有很好的可伸缩性、弹性和扩展性,可以灵活扩容、方便升级,设备管理和维护也非常容易。云存储可以根据用户的数量和存储的容量,按需扩容,规避了一次性投资所带来的风险,降低了投资成本;云存储通过存储虚拟化技术,将数量众多的廉价存储设备虚拟化,形成统一存储资源池,管理员可以对存储资源池进行统一的管理,最大幅度的降低管理成本。
(4)服务能力
传统存储容易出现由意外故障而导致服务中止的现象。传统存储将业务和存储相互对应,根据特定的业务划分相应的存储设备。由于存储设备之间的隔离,如果某台设备出现意外故障,业务就会中止,必须将故障修复后才能恢复业务。
而云存储则采用业务迁移、数据备份和冗余等多种技术来保证服务的正常运行,当某个存储设备发生故障时,云存储会根据系统目前的状态,自动将用户的请求转移到未发生故障的存储设备上。发生故障的存储设备恢复后,用户的请求也会重新转移到原存储设备,可以有效地可以保证服务的持续性。
(5)便携性
传统存储属于本地存储。数据会保存在本地的存储设备中,并不会和外界进行互联,导致数据具有较差的便携性。
而云存储属于托管存储。云存储可以将数据传送到用户选择的任何媒介,用户可以通过这些媒介访问及管理数据。