我应该在EBS或S3上保留图像吗?

时间:2010-02-18 12:05:03

标签: amazon-s3 amazon-ec2 amazon-web-services cloud amazon-ebs

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

我已经附加了用于存储MySql数据的EBS卷。在我的Web应用程序中,人们可以上传图像所以我应该坚持下去。我脑子里有两种选择:

  1. 将上传的图像保存到EBS卷。
  2. 使用S3服务。
  3. 以下是我的笔记,请对它们持怀疑态度,因为我的专业知识不是服务器,而是软件开发。

    • EBS plus:S3存储更贵。 (0.15 $ / Gb> 0.1 $ / Gb)

    • S3 plus:来自EBS的服务静态可能会对我的网络服务器的性能产生负面影响。这是真的?服务图像是否会显着影响服务器性能?对于S3,我的服务器不负责提供静态。

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

    • EBS plus:人们说EBS更快。

    • S3 plus:人们说S3对持久性更安全。

    • EBS plus:无需学习API,可以直接将图像保存到EBS卷。

    即使我无法决定,如果你指导就会很高兴。

    由于

5 个答案:

答案 0 :(得分:53)

价格比较不太合适: S3费用为每GB使用0.14美元,而EBS费用为每GB PROVISIONED 0.10美元(EBS卷的大小),无论您是否使用。因此,S3可能会或可能不会比EBS便宜。

答案 1 :(得分:49)

我目前正在将S3用于项目,并且它的工作非常好。

EBS意味着您需要管理卷+机器以将其附加到。您需要在填充和执行备份时添加空间(并不是说您不应该备份S3数据,只是它不是那么重要)。

它还使得扩展更难:当您想要添加其他计算机时,您需要将图像拉到单独的计算机或克隆所有图像。这也意味着您要添加一个瓶颈:您必须管理自己的上传过程,该过程将上传到所有计算机或让一台计算机管理它。

我推荐S3:它已经确定并且忘了。任意数量的机器都可以并行执行上传,您实际上并不需要通知其他机器有关上传的信息。

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

答案 2 :(得分:12)

我在AWS上有针对股票摄影网站的架构解决方案,这些网站存储了数以百万计的TB数据图像,我想根据您的要求分享AWS的一些最佳实践:

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

P2)将可重现的图像(如拇指等)存储在S3 Reduced Redundancy选项(RRS)中以节省成本

P3)根据查询的复杂性,可以将包含S3 URL的图像的元数据存储在Amazon RDS或Amazon DynamoDB中。查询Amazon RDS中的条目。如果您的查询很复杂,通常的做法是将元数据存储在Amazon CloudSearch或Apache Solr中。

P4)使用Amazon CloudFront向您提供低延迟的用户。

P5)通过Amazon EC2上的SQS或RabbitMQ对您的图像转换进行排队

P6)如果您打算使用EBS,那么它们的EC2无法扩展。理想情况下,您可以将GlusterFS用作所有图像的公共存储池。 Auto Scaled模式下的多个Amazon EC2仍然可以连接到它并访问/写入图像。

答案 3 :(得分:8)

您已经概述了两者的优缺点。

如果您计划存储数TB的图像,并且存储要求日复一日地增加,S3可能是您最好的选择,因为它专门针对这些情况而构建。您可以获得无限的存储空间,而不必担心许多sharding your data卷上的EBS

S3的经常性成本是它比EBS贵50%。您还必须学习API并在您的应用程序中实现它,但这是一次性费用,我认为您应该能够非常快速地吸收它。

答案 4 :(得分:5)

您是否希望图片无限期使用?

亚马逊EBS常见问题很清楚;年度失败率并非“基本为零”;他们引用0.1%至0.5%。它比桌面下的磁盘更好,但它需要某种备份。