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

jav*_*nes 64 cloud amazon-s3 amazon-ec2 amazon-ebs amazon-web-services

我正在将我的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卷.

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

谢谢

Kai*_*nke 53

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

  • 很好的一点.不过,可能应该是评论,而不是答案.:)反正+1 :) (11认同)

Gar*_*son 49

我目前正在使用S3进行项目,而且它的工作非常好.

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

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

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

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

  • S3 + Cloudfront为+1.我正在使用它为我们的某个属性提供Flash电影,效果非常好. (5认同)

小智 12

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

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

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仍然可以连接到它并访问/写入图像.


Dan*_*llo 8

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

如果您计划存储数TB的图像,并且存储要求日益增加,S3可能是您最好的选择,因为它专门针对这些情况而构建.您可以获得无限的存储空间,而无需担心在许多EBS卷上分片数据.

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


小智 5

你是否期望图像无限期地持续下去?

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