我正在开发一个接受文件上传的 Rails 应用程序,用户可以稍后在其中修改这些文件。例如,他们可以更改文本文件内容或对图像进行基本操作,例如调整大小、裁剪、旋转等。
目前,这些文件存储在 Apache 与Passenger 一起运行以服务所有应用程序请求的同一台服务器上。
我需要将用户文件移动到专用服务器以分配我的设置负载。目前,我们的用户在一周内上传了大约 10GB 的文件,虽然不是很大,但最终会增加。
因此,我正在讨论如何实现应用程序服务器和文件服务器之间的通信的不同选项。我想从一个简单且万无一失的解决方案开始。如果它以后可以在多个文件服务器上很好地扩展,我会非常高兴。
以下是我一直在研究的一些不同选项:
- 亚马逊 S3。我发现为我的应用程序实现有点困难。它增加了再次“上传”上传文件的复杂性(可能会多次),请注意用户可以使用我的应用程序修改文件和图像。除此之外,“设置它并忘记它”解决方案会很好。
- 某种简单的 RPC 服务器,它存在于文件服务器上,从应用程序服务器端看时透明地管理文件。我还没有在这里找到任何标准且经过良好测试的工具,所以这在我看来更具理论性。然而,在 GitHub 中构建和使用的 Bert 和 Ernie 看起来很有趣,但刚开始可能太复杂了。
- MogileFS 似乎也很有趣。还没有看到它在使用中(但这是我的问题:)。
因此,我正在寻找不同的(可能是基于标准的)方法,用于 Web 应用程序的文件服务器是如何实现的,以及它们是如何在野外工作的。