【问题标题】:Amazon EC2 - picture uploadAmazon EC2 - 图片上传
【发布时间】:2014-04-01 09:22:15
【问题描述】:

我有一个 Web 应用程序,我正在将图片上传从我的机器移动到 EC2 机器。 基本上,我将有一个 Web 应用程序,用户可以在其中通过 HTTP post 发送 jpg 文件。

  1. 用户将 jpg 文件上传到 EC2 实例
  2. 创建了几种尺寸的图像(大约 9 个)
  3. 所有尺寸都上传到 S3

关于哪台机器最适合这项工作的任何想法? 我在想 c3.large 实例http://aws.amazon.com/ec2/pricing/

大家还有什么建议吗? 谢谢

【问题讨论】:

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


    【解决方案1】:

    很难说,将取决于传入的图像量。如果用户量与实例大小相匹配,任何实例(微型 IMO 除外)都会执行您想要的操作,但我们不这样做不知道用户数。

    几个建议,不要试图猜测正确的大小,而是按照 AWS 的预期使用方式设置您的应用程序 - 自动可扩展,因此您不必猜测或担心如果您的系统突然出现该怎么办变得很受欢迎。

    考虑通过在需要时启动更多实例来增强您的系统响应更高容量的能力,而不是为一台 95% 的时间比您需要的更大的机器付费,这样 5% 的当音量达到峰值时,您有额外的容量来满足您的需求。这将需要更多的前期工作,但可能会在以后节省您的精力和金钱。

    一些一般的想法:

    • 当用户向您的应用发布图像时,将消息放入“工作队列”。 (SQS)
    • 让工作机器监视 SQS 队列中的“待办事项”(调整图像大小)
    • 内置自动缩放指标,用于监控 SQS 队列的大小,并在积压开始变大时启动新实例(考虑使用现场实例以节省资金)。
    • 将处理后的图像保存到 S3,而不是您的 ec2 实例 - 将存储和带宽卸载到更便宜、更快、更冗余且不依赖临时 EC2 实例的地方。
    • 考虑使用 Cloudfront 来交付您的 s3 映像,以便在全球范围内获得更好的性能(如果适用)。
    • 当您的 SQS 队列变小时关闭实例以节省资金,但不要关闭它们太快。一旦它们启动,您就需要为整个小时付费,所以请记住这一点。

    【讨论】:

    • 感谢您的回答。我打算使用自动缩放。我并不是建议我只使用一台机器。我只是在问哪种机器类型最适合这种类型的操作:更多的 CPU 更少的 RAM 和更多的网络功能?像那样的东西。至于队列,我只是想用户将图像上传到托管在 EC2 上的 Web 应用程序,然后从那里直接上传到 S3,这样上传完成后,所有图像尺寸都可以在 CloudFront 上使用.
    • 我还有一个问题。我应该在哪里保存图片是否已处理的事实?我的意思是,我需要像 SimpleDB 或 DynamoDB 这样的数据库系统吗?
    • 我会将未处理的图像存储在一个 s3 存储桶中,将处理过的图像存储在另一个存储桶中。除非您需要存储有关图像的其他元数据,否则数据库可能仅用于跟踪已处理/未处理状态。
    • 好吧..我想我明白了。谢谢你的帮助:)
    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 2010-11-26
    • 2012-05-09
    • 2015-08-24
    • 2019-05-15
    • 1970-01-01
    • 2015-06-20
    • 2017-11-04
    相关资源
    最近更新 更多