云计算存储技术分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云计算存储技术分析

摘要

随着网络应用业务量的不断增长,云存储技术作为云计算系统的重要应用之一,也得到了更多的关注。对云存储技术的研究实质上是研究分布式存储技术。不同于传统的存储体系,云计算存储技术需要解决更多的数据以及运算的负载,需要保证更好的数据可用性以及数据一致性,需要提供更快的系统响应时间。针对这些需求,各大公司都开发出可以很好的解决方案,本文主要针对主流的云存储系统(Google File System、 Amazon Dynamo等)进行分析,主要分析其在冗余备份、动态扩展、负载均衡等方面的解决策略。

关键词:云存储,冗余备份,动态扩展,负载均衡

Abstract

As with the rapid growth of web application, cloud storage is getting more and more attention. In fact, research on cloud storage is essentially research on distributed storage technology. Distinguished from conventional storage system, distributed storage technology needs to better support enormous amount of data and computing workload, guarantee better data availability and integrity, and provide shorter system response time. To meet those requirements, lots of giant companies have come up with great solutions, this article mainly analyses mainstream cloud storage system, such as Google File System, Amazon Dynamo etc. And the main focus is on strategy for redundant backup, dynamic extension, workload balance.

Keywords:cloud storage, redundant backup, dynamic extension, workload balance

1.云计算与云存储简介

近年来,云计算无疑是最热门的技术话题之一,越来越多的IT企业推出了自己的云计算产品,它的商业价值被给予了巨大的肯定,被认定是未来发展的必然趋势之一。

那么什么是云计算呢?目前,对于云计算的认识还在不断地发展变化,并没有一个统一的定义。号称“网格之父”的Ian Foster是这样定义云计算的:“云计算是由规模经济拖动,为互联网上的外部用户提供一组抽象的、虚拟化的、动态可扩展的、可管理的计算资源能力、存储能力、平台和服务的一种大规模分布式计算的聚合体”。[1]从概念上看,云计算实质上是一种分布式计算,云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务,提供资源的网络被称为“云”。

当云计算系统需要运算和处理大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,高性能的云存储也就成为了实现云计算服务的基本条件。云存储是指通过集群应用、网格技术或分布式系统等功能,将网络中大量不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。事实上,几乎在所有的基于云计算服务的应用中都需要高性能的云存储来满足数据处理的需求。

2. 云计算存储技术

从云计算和云存储的概念中可以看出,云存储实质上是一种分布式存储,因此对于云计算存储技术的研究的核心在于对分布式存储技术的研究。由于云存储底层设备的软硬件环境各不相同,且所处的网络也是一个多变的环境,因此云计算的存储技术除了需要解决基本的海量数据的存储与获取之外,还需要解决负载均衡、提高容错性、动态扩展等许多传统存储系统没有遇到过的挑战。

针对上面提到的几点挑战,本文将对现有的技术进行介绍、分析及对比。

2.1 提高容错性

分布式存储系统(如Amazon Dynamo和GFS)都是应用在实际服务器上的系统,每一次出错都会带来巨大的损失,然而由于分布式系统的运行环境决定了其需要面对巨大的压力。据Google说,其每1000台服务器的集群中,平均每天坏掉一台机器,因此容错性是分布式存储系统在设计时就必须优先考虑的问题。[2]为了提供较高的容错性,常用的方法主要是冗余存放。具体的做法就是将同一份数据复制为多份(具体的数量是根据不同的应用场景决定),同时存储在多个节点上,这样就可以在某一节点出现故障(临时故障或永久性故障)时,存储在其他节点上的数据备份可以继续提供服务。由之前所述平均每1000台服务器每天会有一台故障,那么其实只需要将同一份数据保存在三台服务器上,那样在同一天三台机器同时出错的概率就降低为10-9,几乎可以视作完全安全了。所以Amazon Dynamo和Google File System都采用了这个策略。在提供了较高的数据可用性的同时,冗余存放还能带来分流数据请求,降低服务器平均负载压力的好处。同一份数据存储在多处地理位置不同、网络情况不同的服务器中,对于处于正常服务状态的数据节点来说,用户在对数据进行读取操作时,距离用户较近并且网络状况较好的服务器节点可以提供更多的服务,同时其他节点可以同时提供数据传输,降低了各自的负载压力,提高了用户获取数据的速度。

下面对Amazon Dynamo和Google File System在提高容错性方面的策略(主要是冗余存放)进行具体的分析和比较。

2.1.1 Amazon Dynamo冗余存放策略

策略定义了N,W,R三个参数,其中N代表系统中每条记录的副本数,W代表每次记录成功写操作需要写入的副本数,R代表每次记录读请求最少需要读取的副本数。只要W+R>N 就可以保证数据的一致性,因为W+R>N时读写总会有交集——必定最少有W+R-N个读请求会落到被写的副本上,所以必然会读到“最后”被更新的副本数据。至于谁“最后”的判断需采用时间戳或时钟向量等技术完成,有逻辑关系先后由时钟向量判断,否则简单的用时间戳先后判断。

这种做法相比我们最朴素的想法——我们直观的想法一定认为如果系统要求记录冗余N 份,那么每次就写入N 份,而在读请求时读取任意一份可用记录即可——要更安全,也更灵活。

说其更安全是指数据一致性更能被保证:比如说客户写入一条记录,该记录有三个副本在三个不同点上,但是其中一个点临时故障了,因此记录没有被写入或更新。那么在对该记录再读取时,如果取两点(R=2 )则必然会读取到最少一个正确的值(临时故障点有可能在读是恢复,那么读出的值则不存在或者不是最新的;若临时故障点还未恢复,则读请求无法访问其上副本)。而使用我们传统方法可能读到发生临时故障的那点,此刻就有可能读出现错误记录(旧的或者不存在),因此可以看到加大W,R 可提高系统安全性;说其更灵活则是指可通过配置N,W,R 这几个参数以满足包括访问方式、速度和数据安全等迥异需求的各种场景:比如对于写多读少的操作,可将W 配低,R 配高;对于写少读多的操作,则可将W 配高,R 配低。

Dynamo对于临时故障的处理方式是:找到一台可用机器,将数据暂时写到其上的临时表中,待临时故障恢复后,临时表中的数据会自动写回原目的地。这样做得目的是达到永远可写,即使该云中只有一台机器可用,那么写请求的数据就不会丢失。

2.1.2Google File System冗余存放策略

该策略主要通过GFS来实现数据的冗余存储。GFS将整个系统的节点分为三种: Master、ChunkServer和Client。GFS中的文件被分成大小固定的数据块,并由Master节点在创建时分配一个64位全局唯一的数据块句柄。数据块被

相关文档
最新文档