Amazon Simple Storage Service(Amazon S3)

万俟心思
2023-12-01

Amazon S3是高可扩展性、持久性和可用的分布式对象存储,它主要是为重要的任务和主要的数据存储,而且它还有一个易于使用的web服务接口。在传统的内部应用程序中,这种类型的数据一般都会保存在SAN或NAS上。然而,一个基于云的机制比如Amazon S3,是灵活的,弹性的,可冗余的。Amazon S3提供了web服务接口,使用这个web服务接口我们可以在任何时间在Amazon EC2或者web上的任何地方存储或者获取任何多的数据。你能够写入、读取、删除大小从1byte到5TB的数据对象,并且在一个Amazon S3桶中你能够存储的对象的数据是没有限制的。Amazon S3还有高可扩展性,允许通过许多独立的客户端或者程序的线程对Amazon S3中的数据进行并发的读取或者写入。

 

1、完美的使用方案

Amazon S3最常用的应用是存储静态网页内容。这些内容可以通过一个web服务器直接从Amazon S3中传送出来,因为Amazon S3中的每个对象都有一个唯一的HTTP URL地址,或者通过CDN进行传送,比如Amazon CloudFront。由于Amazon S3的弹性,它特别适合在带宽经常改变时传送主机网页内容。而且,因为不用进行存储配置,Amazon S3非常适合快速增长的有大量的用户内容(比如,视频和图片共享)的网站。

Amazon S3也常常用来作为大规模计算的数据存储,比如,分析金融交易或者点击流数据,视频传送编码。因为Amazon S3的水平可扩展性,你可以并发地从多个计算节点访问你的数据,而不仅仅是一个连接。

最后,Amazon S3常常用来存储重要任务的数据,高可靠性地存储Amazon EBS Volumes的快照,为连续的业务提供备份和热灾难恢复。因为Amazon S3存储对象时,会跨越多个设施的多个设备进行冗余存储,它提供了高持久性的存储设施,这正是这些方案所需要的。

 

2、性能

在同一个区域中从Amazon EC2中访问Amazon S3的速度很快。如果你并发地使用多个线程、多个程序或者多个客户端来访问Amazon S3,Amazon S3总的吞吐量远远超过单个的服务器生成的或消耗的。

为了快速访问相关的数据,许多开发者会同时使用Amazon S3和Amazon SimpleDB。Amazon S3存储实际的信息,Amazon SimpleDB服务器存储相关的元数据(比如,对象名,容量,关键字等等)。SimpleDB提供自动索引,使得我们可以高效地通过对元数据的搜索定位到一个对象的引用。这个结果可以用来准确地定位目标,然后从Amazon S3中取出对象。

 

3、持久性和可用性

通过自动同步地在你所选择的地理区域中的多个设备和设施之间存储数据,Amazon S3提供了在AWS平台中最高级别的数据持久性和可用性。纠正错误是内建的功能,而且没有单点故障。Amazon S3旨在承受两个设施的并发的数据丢失,这样,它就非常适合存储重要任务的数据。事实上,Amazon S3对每个对象有99.999999999%的持久性和一年时间的99.99%可用性。除了它自己的冗余度,Amazon S3还能对Amazon S3版本的使用让数据免遭应用程序错误和意外删除造成的数据损坏。有了在一个桶中的可用的这种方案,删除一个版本的Amazon S3对象需要两种形式的认证:有效的AWS账户凭证和一个从物理令牌设备的六个数字的代码。

对于那些在需要的时候容易重新生成的非重要数据,比如,通过转码的媒体、图像的缩略图,你能够在Amazon S3中使用RRS,它提供更低级别的持久性,而且存储费用也较低。使用RRS存储的对象的冗余度比用标准Amazon S3存储的对象低。但是,在这两种情况下,你的数据仍然存储在多个地方的多个设备上。RRS旨在在一年里为每个对象提供99.99%的持久性。虽然RRS的持久性比Amazon S3低,但是,它还是比通常的磁盘驱动器的冗余度高400倍。

 

4、花费

同所有的AWS相比,使用Amazon S3你只需为你所使用的部分付费,没有最少费用和长期合同。Amazon S3的费用有三部分:存储(以每月每GB计算)、数据的传输(以每月每GB计算)、请求(以每月每n千个请求计算)。对于新的用户,AWS提供免费的5GB容量的Amazon S3存储。

 

5、弹性和可扩展性

Amazon S3被设计成能够自动提供非常高级别的弹性和可扩展性。不像传统的文件系统那样,在一个目录中存放大量文件时会遇到问题,Amazon S3在桶中可以存放无限量的文件。而且,不像传统的磁盘驱动器,它对文件数据的多少有限制,在你存放文件之前,你必须对数据进行分割,而一个Amazon S3桶对文件数据多少没有限制。你能够存放无限多的对象,并且Amazon S3会在同一个Region中的其它地方的服务器上对你的信息进行大规模和分布式地冗余备份,所有的这些都采用Amazon的高性能基础设施。

 

6、接口

Amazon S3提供了SOAP和RESTful网页服务器的API。这些API使得可以在名字唯一的桶(顶级文件夹)中存储Amazon S3对象(文件)。每个对象在它所在的桶中有一个唯一的对象键(文件名),它作为这个对象的标识符。因为Amazon S3是一个基于web的存储系统而不是传统的文件系统,你可以创建和文件相对应的全路径名的对象键名,从而可以简单地在Amazon S3中模仿文件系统的层次结构。

大多数开发者在Amazon S3中创建程序时都是使用高级工具包。AWS和第三方已经为几种有名的软件开发语言和平台开发了Amazon S3接口工具包和库。

因为Amazon S3旨在主要通过API进行访问,AWS Management Console和第三方工具也已经开发出了能够同你的Amazon桶和对象进行交互的图形接口和命令行接口。Amazon S3也支持BitTorrent协议,它能够让用户同时从Amazon S3和其它提供商获取信息。

为了上传和下载大量数据,你还能使用AWS Import/Export服务。AWS Import/Export使用轻便的传输存储设备能够加速从AWS移入或移出数据。Amazon会装载你的设备,然后从你预先制定的Amazon S3桶中移入或移出数据。这种方法比通过网络传输大量数据速度更快、价格更便宜。

要注意的是,RRS和标准Amazon S3使用相同的接口;在PUT操作中设置Storage Class属性,或者在AWS Management Console选择“Use Reduced Redundancy Storage”设置,为Amazon S3对象或者桶制定RRS选项。

 

7、Amazon S3反模式

Amazon S3最适合存储大量分类的信息,这些信息是相对静态的,并且可以充分利用Amazon S3的持久性、可用性和弹性等特点。然而,在大量情况下,Amazon S3并不是最佳方案:

    文件系统—Amazon S3使用一个平坦的名字空间(不是分层次的),并不会作为独立的、与POSIX兼容的文件系统。然而,可以使用分隔符(通常是‘/’或者‘\’),在一个给定的桶中创建你的键来模仿文件系统的分层式的文件夹结构。

    可查询的结构化数据—Amazon S3不提供查询的能力:要获取一个指定的对象,你需要事先指定桶名和键值。因此,你不能只把Amazon S3作为数据库使用。一种通常的使用方式是在Amazon S3中存放一个对象,然后,使用Amazon SimpleDB存放对象的元数据。你也能使用其它诸如Amazon RDS或者在Amazon EC2实例上的数据等数据库技术。然后,你可以搜索数据库来定位对象的桶名和键值,从而从Amazon S3桶中获取对象。

    快速改变的数据—对于频繁更新的数据,最好使用诸如EBS或者数据库等有着低读写等待时间的存储方案。
 类似资料: