我该将图片存储在EBS还是S3上?

65

我正在将我的Java、Tomcat、Mysql服务器迁移到AWS EC2上。

我已经附加了EBS卷来存储MySQL数据。在我的Web应用程序中,人们可以上传图像,所以我需要持久化它们。我头脑中有两种选择:

  1. 将上传的图像保存到EBS卷中。
  2. 使用S3服务。

以下是我的笔记,请对它们持怀疑态度,因为我的专业不是服务器,而是软件开发。

  • EBS plus:S3存储更昂贵。(0.15美元/GB > 0.1美元/GB)

  • S3 plus:从EBS提供静态资源可能会对我的Web服务器性能产生负面影响。这是真的吗?提供图片是否会明显影响服务器性能?对于S3,我的服务器将不负责提供静态资源。

  • S3 plus:从EBS提供静态资源可能会导致I/O成本,但可能很小。

  • EBS plus:人们说EBS更快。

  • S3 plus:人们说S3更安全。

  • EBS plus:无需学习API,将图像保存到EBS卷很简单。

换句话说,我无法决定,如果您能指导我将会很高兴。

谢谢


S3现在按$0.14 GB-月计费,请参考http://aws.amazon.com/s3/pricing/。 - MikeNereson
5个回答

54

价格比较并不完全正确: S3的收费标准是每使用1GB收费$0.14,而EBS的收费标准是每分配1GB(您的EBS卷大小),无论是否使用都要收费$0.10。因此,S3可能比EBS更便宜,也可能不是。


11
非常好的观点。也许应该作为评论,而不是答案。:) 不管怎样还是点赞了。 - BMiner
似乎是一个有效的答案。 - Sorter
当问题涉及决定S3和EBS之间的区别时,我更喜欢这样的回答(而不是评论)。用户在查看两者之间的优点时需要将此点作为首要考虑因素。 - eQ19

49

我目前在一个项目中使用S3,它运作得非常好。

EBS意味着你需要管理一个卷+连接到它的机器。随着填充空间的增加,你需要添加空间并执行备份(并不是说你不应该备份S3数据,只是它不像EBS那样关键)。

这也使得扩展变得更加困难:当你想要添加额外的机器时,你要么需要将镜像拉到一个单独的机器上,要么跨所有机器克隆镜像。这也意味着你正在添加一个瓶颈:你将不得不管理自己的上传过程,这将上传到所有机器,或者有一个单独的机器来管理它。

我推荐使用S3:一劳永逸。任意数量的机器可以并行执行上传,而且你不需要通知其他机器上传情况。

此外,你可以使用Amazon Cloudfront作为廉价CDN,在图像之前进行缓存,而不是直接从S3下载。


7
+1 表示对 S3+Cloudfront 的支持。我正在使用它来为我们的某个项目提供 Flash 视频服务,效果非常好。 - devstuff

13

我在AWS为存储数百万张图片的股票摄影网站设计了解决方案,涵盖TB级别的数据。我想分享一些针对您需求的最佳AWS实践:

P1) 将原始图像文件存储在S3标准选项中。

P2) 将可复制的图像(例如缩略图等)存储在S3冗余降低选项(RRS)中以节省成本。

P3) 图像的元数据,包括S3 URL,可以存储在Amazon RDS或Amazon DynamoDB中,具体取决于查询复杂性。从Amazon RDS查询条目。如果您的查询很复杂,通常也会将元数据存储在Amazon CloudSearch或Apache Solr中。

P4) 使用Amazon CloudFront快速地向用户传递缩略图。

P5) 通过SQS或RabbitMQ在Amazon EC2上排队进行图像转换。

P6) 如果您计划使用EBS,则它们无法与EC2扩展。因此,您可以理想地使用GlusterFS作为所有图像的共享存储池。多个处于自动缩放模式的Amazon EC2仍然可以连接到它并访问/编写图像。


8
你已经概述了两者的优缺点。
如果你计划存储数千兆字节的图像,并且存储需求日益增长,那么S3可能是你最好的选择,因为它专门为这种情况而构建。你可以获得无限的存储空间,而不必担心将你的数据分片到许多EBS卷中。
S3的周期性成本是它比EBS昂贵50%。你还需要学习API并在应用程序中实现它,但这是一次性的开销,我认为你应该能够很快吸收它。

学习API并不是问题。我想要澄清的是,是否在服务器外部提供静态文件(即让S3提供它们)会对我的RAM使用产生积极影响?我预测内存(RAM)将成为我的服务器瓶颈。 - enesness
1
是的。从S3提供服务将使您的EC2实例免除此责任,因此它绝对会节省一些CPU和RAM资源。具体节省多少取决于你期望的流量。您可能会有兴趣查看以下Coding Horror博客文章:http://www.codinghorror.com/blog/2007/03/using-amazon-s3-as-an-image-hosting-service.html - Daniel Vassallo

6

您是否期望图像永久存在?

亚马逊EBS常见问题解答非常清晰;其年故障率并非“基本为零”,引用的是0.1%至0.5%。虽然比您桌子下的磁盘更可靠,但仍需要某种形式的备份。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接