1

我正在寻找更清洁的方法来水平扩展我的 Java 应用程序,同时对源代码和基础架构的影响最小。这是我的问题:我目前正在本地文件系统中保存资源,所以我需要始终如一在我所有的新处理处理节点之间共享这些文件。我知道 ehcache 和 terractora 服务器阵列的存在,但 localRestartable(保证持久性)仅在 ehcache 企业上可用,我希望尽可能远离商业许可证。其他替代方案可能是 memcached、redis、mongodb(考虑到持久性),甚至 nfs,但我希望有使用这些服务作为存储服务经验的人的意见,我还需要澄清:要求阻止使用任何在线云存储服务,尽管我愿意接受任何可以安装在我的数据中心的替代方案!

4

1 回答 1

1

使用 MongoDB,您可以利用:

  • 用于将数据分发到多个服务器的副本集
  • 分片以扩展写入(如果适合您需要管理的数据量和写入)

您有几个选项可以在 MongoDB 中存储二进制文件:

1)您可以将文件保存为 MongoDB 文档中字段中的二进制数据。当前的文档大小限制(在 MongoDB 2.2 中)是 16Mb,这对于您的 ~1Mb 文件来说似乎绰绰有余。

2) 您可以使用GridFS API方便地处理较大的文档或以较小的块获取二进制文件(另请参见:GridFS 类的 Java 文档)。

于 2012-09-07T14:11:18.863 回答