InfoQ 在线问答:亚马逊 AWS S3 的热点问题

  • 包研

2014 年 8 月 5 日

话题:AWS云计算语言 & 开发架构

2006 年,亚马逊 AWS 推出了第一个对外的云服务 S3,一种面向互联网的存储,通过 API 就可以控制存储对象,相对于传统的磁盘和数据库,S3 使用更简便且无需维护。截至到 2013 年 Q2,S3 上存储了 2 万亿个数据对象。在 7 月 29 日进行的 InofQ 在线课堂《您必须了解的 S3 基础知识》上,亚马逊 AWS 资深技术讲师张波、解决方案架构师张荣典回答了网友的提问。现将 Q/A 实录整理如下:

问:如果用 S3 Hosting forum 行吗?

答:S3 比较适合静态的数据,如果你的应用里面用到动态数据,比如说类似数据库这样的数据,推荐拿 EC2 配合 S3 来使用,来 Hosting 你的论坛的。

问:用 S3 作静态网站,还需要单独的 EC2 主机做 Web server 吗?

答:静态网站 S3 就可以服务。不需要 EC2 主机。

问:S3 是否支持对象分块查重更新功能? 还是需要应用来实现这样的功能?

答:这个问题可能有两个方面了,第一个是否支持对象分块查看,其实 S3 里头有一个功能,叫 range based download,所以你在 http 请求的时候可以指定对该对象访问的 range。那我理解可能你主要是想问这个。

问:S3 会对内容扫描杀毒吗?

答:S3 是个简单的存储服务,它不会对用户的数据做任何扫描,或者读取操作。正好和大家分享一下 S3 的设计理念,S3 就是一个存储的平台,它做的是原子化的 API,做得非常的健壮,采用分布式因此非常稳定和可靠。像杀毒这些增值功能,我们会留给合作伙伴来支持,比如说今天听课的朋友想在 S3 上做一些附加的一些 feature,都可以去做,我们把这个广阔的空间就留给大家。

问:请问 S3 价格怎么计算?

答:S3 的价格是比较经济的,它收费主要分两部分,一部分是每月每 GB 的容量来计费。另外一个是按照 S3 上数据对象的下载的数据量来进行收费的,但把数据上传到 S3 上是完全免费的,我们有很多客户的他们的路联网应用充分利用了这个免费的功能,比如说 Dropbox、Dropcam 这类客户很好的享受了这种好处。

问:S3 在中国有数据中心吗?

答:大家注意到,我们在去年发布了一个中国的 region。目前 AWS 中国这个 region——bjs 是在一个有限公开预览的阶段。可以确定的告诉大家,S3 在中国是有的。

问:删除后马上读,会读到旧的数据。最终一致性多久(延迟)能保证?

答:读数据的时延,取决于当时的并发吞吐量和所读取的数据对象的大小。通常情况下,最终一致性的时延可能是在几百毫秒到几秒。

问:有关 AWS 的安全方面有讲座么?我觉得这反面应该讲讲。

答:安全确实是个很重要的话题,覆盖的范围比较广,比较适合在一个单独的话题里讨论。单就 S3 来说,客户可以通过服务器端加密的方式加强安全。同时,也可以在上传数据之前加密,数据传输过程中可以通过 SSL 的方式进行加密。

问:Region 和 Available Zone(AZ)有啥区别?来自中国的请求,是如何被发送到新加坡 Region,而不是发送到美西 Region?

答:Region 是一个相对比较大的地理区域,是 AWS 提供服务的可用区(Available Zone)的集合。目前 AWS 有 10 个 Region,美国 4 个,亚洲有新加坡、悉尼、东京和北京。可用区是在一个 Region 里面,提供高可用的数据中心的集合。可用区之间会有足够的距离,来实现故障隔离。同时提供高速链路互联,数据可以同步的方式在可用区间复制。

问:关于 AWS 架构规划设计方面的问题,需要我们自己做吗?还是 AWS 根据公司的实际情况来设计?

答:客户可以联系 AWS 的销售和 SA(系统架构师)一起进行系统的规划设计。

问:在数据一致性方面,在更新操作的时候为什么没保证强一致性么?是基于什么方面的考虑?

答:分布式系统中都会遇到著名的 CAP 问题,C 是一致性,A 是服务的可用性,P 是分区容忍性。三者之中只能保证满足两个。最终一致性保证了分区容忍性和服务的可用性,比较适合对一致性要求没有那么严格的应用。很多互联网应用,尤其是在访问静态类型的数据的时候,这样的最终一致性足够满足应用的需要。

问:ELB 是在 http 请求时进行负载均衡。非 http 服务器,比如 RTMP 服务或者 Socket 服务器,前端如何进行负载均衡?

答:ELB 可以支持 4 层和 7 层。你的需求可以配置 4 层的 listener -tcp。另外,如果做流媒体,可以使用 S3 host 内容,配合 CloudFront 做分发。

问:如果跨 Region 访问 S3 效率如何,比如前端应用在 ap-southeast,S3 在 Us-West?

答:不推荐把 S3 和前端应用跨 Region 部署。S3 的存储桶可以通过 copy 或 sync 这两个命令在 Region 之间同步。

问:对象键名与分布式的性能是什么关系?键名随机性越大分布的区域越多吗?

答:S3 使用存储桶名和键名的前缀进行分区。在 aws.amazon.com/s3 的网站上,S3 的开发文档中有专门一章介绍如何通过键名的随机分布来提升性能。

问:针对目前数据泄露等信息安全方面的考虑,AWS 会有什么措施保证不重现"斯诺登"事件?

答:从 S3 来说,可以通过 client 端加密对象,或者 server 端加密对象。

问:对客户网络有什么样的要求?

答:主要看你自己应用的客户和客户端在那里,数据在 S3 的哪个 Region。

问:S3 有没有免费的试用空间?比如分配给开发者 4MB 左右的试用空间,我们可以自己动手进行测试一下?

答:注册 AWS Free Tier 可以享受 12 个月 5GB 的免费空间。

问:S3 是否有详细的访问日志和分析工具?

答:有 access log 功能,可以详细记录对 S3 存储桶的访问记录。

问:应用开发与 S3 接口示例在哪里下载?

答:http://aws.amazon.com/cn/s3/developer-resources/

AWS云计算语言 & 开发架构