【发布时间】:2012-02-10 21:59:34
【问题描述】:
http://farm8.staticflickr.com/7020/6702134377_cf70482470_z.jpg
好吧,抱歉画的很糟糕,但这似乎是一种更好的方式来组织我的想法并传达它们。一段时间以来,我一直在努力研究如何创建一个最佳的解耦、易于扩展的系统,用于将文件上传到 AWS 上的 Web 应用程序。
直接上传到 S3 是可行的,只是上传者需要立即访问文件以进行操作,然后一旦被操作,他们就可以转到 s3,在那里它们将被提供给所有实例。
我想用 glusterfs 之类的东西创建一个 SAN,然后直接上传到那里并从中提供服务。我没有排除它,但从不同的来源来看,这个解决方案的可靠性可能不太理想(如果有人对此有更好的了解,我很想听听)。无论如何,我想制定一个更“开箱即用”(在 AWS 环境中)的解决方案。
所以为了详细说明这个图,我希望将文件上传到它碰巧要去的实例的本地文件系统,这是一个 EBS 卷。文件的存储位置不会向公众提供(即 /tmp/uploads/ ),实例仍然可以通过 PHP 中的 readfile() 操作访问它,以便用户在上传后立即查看和操作它。用户完成对文件的操作后,一条将其移动到 s3 的消息可能会在 SQS 中排队。
我的问题是,一旦我将文件“本地”保存在实例上(由于负载均衡器可能是任何实例),我如何记录它所在的实例(在数据库中)以便后续请求通过PHP 读取或移动文件会找到所说的文件。
如果在这方面有更多经验的人有一些见解,我将非常感激。谢谢。
【问题讨论】:
标签: upload amazon-s3 amazon-ec2 amazon-ebs