十二 182009

这2天接触了一下Amazon Web Services(AWS)中的Amazon Simple Storage Service,简称Amazon S3(下称S3)。S3站点上用下面的语句描述了自己的作用:

Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers.

Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives any developer access to the same highly scalable, reliable, fast, inexpensive data storage infrastructure that Amazon uses to run its own global network of web sites. The service aims to maximize benefits of scale and to pass those benefits on to developers.
通过S3这个接口,您可以把Amazon的存储服务当作一个硬盘,可以随时随地上传,下载数据,不过您得付钱才可以使用,即使您只是准备测试一 下。S3首页上有价格表。在S3注册并付费获取2个数:Access Key ID和Secret Access Key,才可以使用S3的服务,因为所有的操作都需要这2个数进行身份验证。

一、基本概念:Buckets,Objects,Keys,Operations

注册后,用户通过名为bucket的容器来管理所有数据,这些数据称之为对象(Object)。比如,一个名为20071211/logo- 320×240.gif的对象存放在livebaby这个bucket里,则可以通过URL:http: //s3.amazonaws.com/livebaby/20071211/logo-320×240.gif来访问这个对象。bucket有3个基本 概念:1、不能删除非空的bucket;2、bucket不能转让给其他用户;3、每个用户最多只能有100个buckets。简单的说,bucket类 似硬盘分区中的第一层目录。

这里还有一个key的概念,key是bucket中对象的唯一标识符,每个对象对应一个key。上例中,20071211/logo-320×240.gif称为key。

每个对象都有一组键值对,称为MetaData,分2种,系统metadata和 用户metadata。S3不处理用户metadata,只接收、存储、返回给用户,由用户自己处理。REST下,系统metadata以x-amz-开 头,用户metadata以x-amz-meta-开头。

Amazon提供2种API:Simple Object Access Protocol(SOAP)和Representational State Transfer(REST)来访问AWS。这里一篇文章,其中简单对比了一下2者的区别,区别后总结说:“ In fact, you can think of REST as a kind of data-access methodology whereas SOAP is a process-control methodology.”

通过SOAP和REST,最常用的操作(Operation)有这么几个:

* 创建bucket;
* 上传对象,上传时必须指定一个key,同时还可以设置这个对象的访问控制权限,默认是私有的;
* 下载对象,有HTTP 和 BitTorrent2种方式;
* 删除对象;
* 列表对象;列表时,可以通过一个前缀(prefix)来过滤显示不同的对象。

通过向AWS的服务端点(endpoint,http://s3.amazonaws.com/)发出PUT、GET、DELETE、HEAD等HTTP Requests,便可以操作S3上的数据。

如果通过web访问S3服务来获取数据(Object),则分页、搜索等功能是比不可少的。而S3提供的4个参数,可以让我们方便快捷的将数据取出来,这4个参数是基于key操作的。key的概念参见文章一。

1、prefix。比如http://bucket.s3.amazonaws.com/?prefix=123,则将key中以123开头的列出来。

2、delimiter。比如http://bucket.s3.amazonaws.com/?delimiter=/,此时,S3可能会返回CommonPrefixes,将key中采用“/”分隔的列出来。

<Contents>
<Key>123/zzz.txt</Key>
<LastModified>2007-12-11T07:41:51.000Z</LastModified>
<ETag>”d725dfc2167445d1db23067de33ebd28″</ETag>
<Size>203</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>abc/ooo/yxx.txt</Key>
<LastModified>2007-12-12T05:34:35.000Z</LastModified>
<ETag>”4fdf8a4dd42bd4d24855eebd5c9b9434″</ETag>
<Size>41</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>

用了“delimiter=/”返回,告诉你 有prefix为123/和abc/可用。

<CommonPrefixes>
<Prefix>123/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>abc/</Prefix>
</CommonPrefixes>

这时输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/则将prefix中有123/的全部列出来。

如果key有这样的形式:ms_vb_5_src/sss.frm,ms_vb_6_src/ddd.frm,你可以把delimiter设为“_”来取数据。通过不同的delimiter和prefix可以非常灵活的获取数据。

如果数据量很大,则可以用第三个和第四个参数

3、MaxKeys。这个告诉S3一次性返回多少数据,默认返回1000个。URL输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/&max-keys=10,则返回:

<Name>bucket</Name>
<Prefix>123/</Prefix>
<Marker />
<NextMarker>123/10.txt</NextMarker>
<MaxKeys>10</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>123/1.txt</Key>
<LastModified>2007-12-12T06:02:33.000Z</LastModified>
<ETag>”9dd4e461268c8034f5c8564e155c67a6″</ETag>
<Size>1</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>

里面IsTruncated为true,表示按照delimiter和prefix和max-keys取出的数据不止10个;余下的数据怎么取?就用到了NextMarker元素中数据。

4、Marker。 URL输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/&max -keys=10&marker=123/10.txt,marker的值就是NextMarker元素中数据。这样S3就返回了下10条数据。

<Name>bucket</Name>
<Prefix>123/</Prefix>
<Marker>123/10.txt</Marker>
<NextMarker>123/19.txt</NextMarker>
<MaxKeys>10</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>123/1.txt</Key>
<LastModified>2007-12-12T06:02:33.000Z</LastModified>
<ETag>”9dd4e461268c8034f5c8564e155c67a6″</ETag>
<Size>1</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>

如果IsTruncated仍为true,则表示还有数据,我们把marker改为marker=123/19.txt便可以继续取下10条数据;如果IsTruncated为false,则表示按照条件已经将数据全部取出来了。

S3文档中,提供更为详细的解释。点击查看:http://docs.amazonwebservices.com/AmazonS3/2006-03-01/

云计算

Posted by 冰河 at 20:58 No Responses » 11,991 Views
十二 182009

在这场围绕云计算的竞赛中,究竟谁能捷足先登?

你的企业的计算机速度够快么?这是一个很难回答的问题。对众多企业来说,自身计算机设备的性能也许永远无法满足需求,因为企业内部信息爆炸的 速度远远比摩尔定律要快得多。一个简单的办法是采购更多、更先进的设备,这可正中设备公司的下怀。英特尔(www.intel.cn)、AMD (www.amd.com.cn)马不停蹄地推出一系列多核处理器,戴尔(www.dell.com.cn)、惠普(www.hp.com.cn)、 IBM(www.ibm.com.cn)等公司的服务器销售人员也从未放松对客户的关照。

但问题也随之而来。尤其是对于众多在资金预算上捉襟见肘的企业来说,不断更新计算设备并非万全之策。还有一点,企业必须租用更多的地方来存放 这些发热量惊人的大铁箱子—由此带来的耗电量本身也是一个令人挠头的问题。有没有更加经济有效的解决途径呢?“云计算”的出现也许为这个问题的解决推开了 大门的一个缝隙。

云计算兴起

云计算是一种全新的商业模式,其核心部分依然是数据中心,它使用的硬件设备主要是成千上万的工业标准服务器,它们由英特尔或AMD生产的处理器以及其他硬件厂商的产品组成。企业和个人用户通过高速互联网得到计算能力,从而避免了大量的硬件投资。

简而言之,云计算将使未来的互联网变成超级计算的乐土。“云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程 服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。”在11月中旬的上海IBM创 新论坛上,IBM高性能随需解决方案团队副总裁Willy Chiu对记者解释说。

这可是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。

这场技术竞赛吸引了众多参赛者。包括Sun、IBM、微软、Google(www.g.cn)、亚马逊(www.amazon.cn)等信息 业巨头都已经循迹而来。“云计算正在兴起。”微软超级计算机研究员Dan Reed也说,“推动云计算兴起的动力是高速互联网连接的发展、更加廉价且功能强劲的芯片以及硬盘、数据中心的发展。”

互联网企业是这方面的先行者,Google的搜索引擎可以视为云计算的早期产品。用户的搜索请求经过互联网发送到Google的大型服务器集 群上,完成之后再返回用户桌面。Amazon.com最近向开发者开放了名为“弹性计算机云”的服务,它可以让小软件公司按照自己的需要购买Amazon 数据中心的处理能力。

IT巨头从中窥到了更大的商机。去年,Sun公司推出了基于云计算理论的“黑盒子”计划。按照它的规划,将来的数据中心将不会局限于拥挤、闷 热的机房中,而是一个个可移动的集装箱—它装载的是10吨经过合理安置的服务器,作为一个可移动的数据中心。它既可以为拥有上万名雇员的大型公司服务,也 能为中小企业提供支持。至于这种数据中心的最佳安放位置,有人推荐是郊外的田野上,最好是发电站附近,这样可以实现成本最低化。

蓝色巨人IBM对此也投下了重注,并为此命名为“蓝云”计划。不久前,IBM和Google达成了一项合作,两家公司将各自出资2000 万~2500万美元,为从事计算机科学研究的教授和学生提供所需的电脑软硬件和相关服务。IBM负责系统和技术团队的高级副总裁Willian M.Zeilter表示:“对我来说,这种感觉就像2000年面对Linux。”目前,该公司已经部署了200多名研发人员在这项业务的研究上。

“从某种意义上说,云计算是网格计算模型自然而然的进一步发展。”IDC分析师Frank Gens认为。那么,究竟谁能够在这场围绕云计算的竞赛中获胜呢?

谁是主宰者?

截至目前,Sun公司已经雄赳赳地冲在了前面。这家计算机巨头的“黑盒子”计划已经进入了发售阶段,而大部分竞争对手的相关服务则依然在酝酿 当中。“我们进展顺利,再加上与客户进行的充分沟通,我们知道我们有望成功。”Sun公司CEO舒瓦茨·乔纳森在个人博客中写道。

微软的优势也显而易见,全世界有数以亿计的Windows用户,微软所要做的就是将这些用户通过互联网更紧密地连接起来,并向他们提供云计算 服务—通过Windwos Live。“当你想到存储,就会想到Windows Live。”这是比尔·盖茨在今年夏天说的话,微软正在创造这样一种用户体验,即从一般的设备存储转移到任何时间都可以存储的模式,其目的很明显,就是在 互联网战略上同Google平起平坐。

不过,短时间内Google的地位依然不可撼动,其开放式的平台体现了云计算模式的精髓。Google的云计算服务所需要的绝大部分基础软件 都是开源的,这意味着用户可以自由的得到那些代码并修改。“Google的编程模式以及它真正的开放性很关键,普通人也可以编写应用程序,而不必非得是斯 坦福或者卡耐基梅隆大学的博士。”IDC(www.idc.com.cn)分析师Frank Gens说。

对IBM来说,这也是扩张自身领地的绝佳机会。IBM具有发展云计算业务的一切有利因素:应用服务器、存储、管理软件、中间件等等,因此IBM自然不会放过这样一个成名机会。Willy Chiu透露,“云计算将是IBM接下来的一个重点业务。”

Google(www.g.cn)和IBM的合作则颇具互补效应。两家公司正试图将各自的技术进行融合,IBM熟谙企业级计算机的运行之道, 而Google悉知大流量数据传输和高速网路链接的不二法门—两家公司的联手有望创造出重大成就。IBM公司CEO塞缪尔·帕米萨诺开玩笑地把这个项目形 容为Google年轻工程师与IBM“胖老头儿”的绝妙拍档。Forrester Research分析师阿德利安称,云计算编程技术将成为基准的下一代计算机编程结构,IBM想捷足先登以抢占制高点,这正好可以利用Google的网络 优势。

谁能真正成为云计算的代言人其实并不重要,重要的是,有了这一系列IT巨头作为后盾,毫无疑问,云计算已经拥有了一个光明的前景。云计算的蓝 图已经呼之欲出:在未来,只需要一台笔记本或者一个iPhone,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。从这个角度而 言,最终用户才是云计算的真正拥有者。

© 2009 - 2024 冰河的博客