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