我正在将我的Java,Tomcat,Mysql服务器迁移到AWS EC2。
我已经附加了用于存储MySql数据的EBS卷。在我的Web应用程序中,人们可以上传图像所以我应该坚持下去。我脑子里有两种选择:
以下是我的笔记,请对它们持怀疑态度,因为我的专业知识不是服务器,而是软件开发。
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卷。
即使我无法决定,如果你指导就会很高兴。
由于
答案 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%。它比桌面下的磁盘更好,但它需要某种备份。