一、概述
云计算(cloudcomputing),是分布式计算技术的一种。云计算透过网络连接,将一切隐没在云端,普通用户不在关心数据存在哪里,不在关心数据的安全,不在关心应用程序是否需要升级,不在关心计算机病毒,这一切工作都由云计算中心负责解决,普通用户要做的就是选择自己喜爱的云服务商并购买自己需要的服务。云计算使普通用户有了享受高性能计算的机会,云计算中心几乎可能提供无限制的计算能力。
Google提出的云计算强调的是云的重要性,因为Google从来都没有端,并且将GFS抛出作为诱饵欲占主动;微软则强调“云”加“端”才是云计算,因为微软的视窗一直是“端”的霸主;VMware则认为虚拟化是云计算的核心技术;Sun公司则重提多年前他们说的老话“网络就是计算机”;Adobe则通过Flex占领用户的眼球,使FlashPlayer进军云计算;另外大量的服务器托管公司则将服务器的租用称为云计算。云存储是在云计算概念上延伸和发展出来的一个新的概念,是云存储重要的存储资源。它通过集群计算、网格计算和分布式计算等功能,透过网络,将不同类型的存储设备通过软件协同工作,对网络用户提供数据存储和访问功能。
二、云存储结构
云存储将云系统的存储资源进行统一整合管理,提供存储虚拟化功能,为用户提供一个统一的存储空间,具有集中存储、分布式扩展、安全认证、数据加密等方面的优点。在云状存储系统中,所有存储资源对使用者都是透明的,使用者不必知道存储设备的型号、接口和传输协议,也不必建立庞大的独立的数据备份系统和应急容灾系统,这些状态监控、维护、备份和应急容灾在云存储系统中都能够自动完成,已经作为云的很自然的一部分。云存储的结构如图1所示。云存储结构模型由4层组成。
1.存储层
云存储设备可以是光纤通道存储设备,也可以是NAS或者iSCSI等网络存储设备。在云中,存储设备数量庞大,通常会分布在不同的地方,通过广域网、互联网或者专用的光纤网络连接。通常需要提供一个统一的存储设备管理系统,实现物理存储设备的逻辑化和虚拟化管理。
2.基础管理层
基础管理层是云存储核心的部分。该层通过集群存储、分布式存储和网格存储等技术,实现众多存储设备之间的协同工作,对外提供统一的存储访问服务。
3.应用接口层
是由众多的第三方软硬件厂商提供的插件层。运营单位可以根据实际业务需要,利用应用接口快速开发满足需求的应用程序,如云存储的视频监控应用、视频点播应用、网络存储的硬盘、远程数据备份应用等。
4.访问层
访问层提供给用户统一的访问登录接口。用户只有登录后,才可以使用云存储服务。不同的云存储系统提供的访问类型和访问手段不同,安全需求也会千差万别。用户可以根据自己的需求选择相应的服务。
三、云存储平台设计与实现
(一)设计方案论证比较
GoogleGFSGoogle的数据存储与管理技术具有以下特点:基于大规模(几千到上万节点)通用PC构建集群;集群节点同时提供存储与计算服务;基于不可靠硬件环境实现了高可靠的集群软件系统;用于处理与生成海量数据集的分布式计算模型高度抽象,在数据密集型业务中应用广泛;数据管理系统不支持完整的关系模型,结构简单而轻量。
Hadoop实现了一个分布式文件系统,简称HDFS。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS采用master/slave架构。一个Namenod以及一定数目的Datanode组成一个HDFS集群。在集群中,每一个节点包含一个Datanode。一个文件则分割成一个或多个block,由Datanode集合提供存储block。HDFS采用java语言开发,这给运存储的部署带来很大的方便。
Dynamo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好,性能也不错:读写访问中99.9%的响应时间都在300ms内。Dynamo的可扩展性和可用性采用的都比较成熟的技术,数据分区采用改进的一致性哈希(consistenthashing)方式进行复制,利用数据对象的版本化实现一致性。复制时因为更新产生的一致性问题的维护采取NRW机制以及去中心化的复制同步协议。Dynamo是完全去中心化的系统,人工管理工作很小。Dynamo按分布式系统常用的哈希算法切分数据,分放在不同的node上。Read操作时,也是根据key的哈希值寻找对应的node。Dynamo使用了ConsistentHashing算法,node对应的不再是一个确定的hash值,而是一个hash值范围,key的hash值落在这个范围内,则顺时针沿ring找,碰到的第一个node即为所需。Dynamo对ConsistentHashing算法的改进在于:它放在环上作为一个node的是一组机器(而不是memcached把一台机器作为node),这一组机器是通过同步机制保证数据一致的。如果一个ring内的访问量大了,则可以在两个node间加入一个新node以缓解压力,这时会影响到其后继node的hash范围,需要调整数据。假设一个ring中原本只有node2、node3、node4,在加入新的node1之后,原先从node2查询的部分key将改为从node1查询,node1和node2中的数据就需要调整,主要是node1从node2中提取出属于它的数据,这样做需要选取性能压力不高的时候。Dynamo的一个node中一台机器建有一个MerkleTree,当两台机器不一致时,通过这个tree结构,可以快速定位不一致的Object来恢复数据。MerkleTree又叫HashTree,它把key分成几个range,每个range算出一个hash值,作为叶子,再一层层合并计算上去,这样,从root开始比较hash值,就可以快速找到哪几段range中的hash值变化了。
责编:王薇
微信扫一扫实时了解行业动态
微信扫一扫分享本文给好友