假设我们正在使用 Play Framework 或 Spring 编写应用程序,并且我们希望使用一种标准的方式来使用 API(对象存储)来管理和存储二进制文件上传,而不是自己管理文件系统。以类似于使用亚马逊云存储的方式,但没有锁定到外部提供商。
想象一下,我们还希望能够首先在与您正在开发的应用程序相同的服务器上运行此服务,直到增长需要您将文件存储移动到它自己的服务器(或集群)和您的应用程序本身在它自己的集群中. 如果我们从集群就绪服务开始,那么我们肯定可以快速扩展。
我们是在小规模运行的同时继续自己管理文件系统,还是采用其他方式?
这是我们需要考虑运行本地 Hadoop HDFS 实例的地方吗,这样我们就不需要在应用程序中重写文件上传和处理,并且可以在需要时将文件管理系统横向扩展到集群中出现。如果将此功能作为具有通用 API 的服务提供,例如在内存中运行 H2DB 以进行集成测试,那就太好了。
或者,当我们仍在制作简单的原型应用程序时,Hadoop HDFS、OpenStack Swift 或 Ceph 是否矫枉过正?
我确定我错过了一些东西 - 但正在努力寻找解决方案。手动管理文件系统感觉很脏,并且不允许我在不重写的情况下将应用程序推送到任何 PaaS 提供商。同样,我认为还应该有一个本地解决方案,而不是总是与亚马逊等集成。
有什么想法吗?