【问题标题】:Should I persist images on EBS or S3?我应该在 EBS 或 S3 上保留图像吗?
【发布时间】:2011-01-18 07:20:58
【问题描述】:

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

我已经附加了用于存储 MySql 数据的 EBS 卷。在我的网络应用程序中,人们可能会上传图片。所以我应该坚持他们。我的想法有两种选择:

  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卷。

即我不能决定,如果你指导会很高兴。

谢谢

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 非常好。不过,可能应该是评论,而不是答案。 :) 无论如何 +1。
  • 似乎是一个有效的答案。
  • 我更喜欢这个作为答案(而不是评论),而问题是关于在 S3 和 EBS 之间做出决定。用户在两者之间通过the benefit 时需要优先考虑这一点。
【解决方案2】:

我目前正在为一个项目使用 S3,它运行得非常好。

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

这也使得扩展变得更加困难:当您想要添加额外的机器时,您要么需要将图像拉到单独的机器上,要么在所有机器上克隆图像。这也意味着您正在添加一个瓶颈:您必须管理自己的上传过程,该过程将上传到所有机器或由单台机器管理。

我推荐 S3:一劳永逸。任何数量的机器都可以并行执行上传,您实际上不需要通知其他机器有关上传。

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

【讨论】:

  • +1 用于 S3+Cloudfront。我正在使用它为我们的一个属性提供 Flash 电影,并且效果很好。
【解决方案3】:

我在 AWS 上为 Stock 摄影网站构建了解决方案,其中存储了数百万张跨越 TB 数据的图像,我想分享一些 AWS 中的最佳实践以满足您的要求:

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

P2) 在 S3 减少冗余选项 (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 仍然可以连接到它并访问/写入图像。

【讨论】:

    【解决方案4】:

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

    如果您计划存储 TB 级的图像,并且存储需求日益增加,S3 可能是您的最佳选择,因为它专为此类情况而构建。您可以获得无限的存储空间,而不必担心sharding your data 超过许多EBS 卷。

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

    【讨论】:

    • 是的,学习api没问题。我想澄清的是,在服务器外部提供静态数据(即让 S3 为它们提供服务)是否会对我的 RAM 使用产生积极影响?我预测内存 (RAM) 将成为我服务器的瓶颈。
    • 是的。从 S3 提供服务将使您的 EC2 实例摆脱这种责任,因此绝对会节省一些 CPU 和 RAM 资源。多少取决于您期望的流量。您可能有兴趣查看以下关于此主题的 Coding Horror 博客文章:codinghorror.com/blog/2007/03/…
    【解决方案5】:

    您是否希望图像可以无限期地保存?

    Amazon EBS 常见问题解答非常清楚;年故障率并非“基本为零”;他们报价 0.1% 到 0.5%。它比你办公桌下的磁盘要好,但它需要某种备份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 2011-06-12
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多