【发布时间】:2014-04-18 22:03:30
【问题描述】:
我正在开发一个将在 AWS 上的弹性环境中运行的应用程序(具有自动缩放功能的 Ec2 实例)。所有的应用程序都是用 PHP 开发的。
该应用的核心是基于将文件安全地存储在 S3 存储桶中。由于用户不需要知道它保存在哪里,我想我可以让这个文件临时存储在 EC2 实例中,然后使用作业队列(Amazon SQS)将它异步移动到 S3 以避免重复等待时间并为 s3 问题提供更好的支持(它们不常见,但可能发生)。
我的问题是:
- 这种方法听起来不错还是我遗漏了什么?
- 在处理队列中的作业时,工作实例必须连接到原始 s3 实例,从中检索文件,然后将其上传到 s3?
- 如何避免自动缩放时出现问题?在我将文件存储到 S3 存储桶之前,可以删除一个实例。
【问题讨论】:
-
文件预计有多大? ec2 实例和 s3 之间的带宽将比您的大多数用户和 s3 高得多。通常我在上传时直接传输文件。我将作业用于需要对文件进行的任何后期处理。
-
它们不应大于 15mb。但是使用 SQS 队列进行此操作可以让我处理 s3 停机时间或问题
-
现在通过添加 SQS,您必须担心 SQS 失败,或者作业没有被拾取,或者在作业可以传输文件之前实例被终止。 15MB 一点也不大。如果上传时无法传输到 s3,我只会认为上传失败或不完整。您将这种大小的文件上传到 s3 的时间只需几秒钟。
标签: php amazon-web-services amazon-ec2 amazon-s3 amazon-sqs