我正在寻找更清晰的方式来在对源代码和基础结构影响最小的情况下水平扩展我的Java应用程序。这里是我的问题:我目前在本地文件系统中保存资源,所以我需要一致在我所有的新处理处理节点之间共享这些文件。 我知道ehcache和terractora服务器阵列的存在,但本地可重新启动(持久性保证)仅适用于ehcache企业,我希望尽可能保留商业许可证。 其他替代方案可以是memcached,redis,mongodb(坚持记住),甚至nfs,但我希望那些有经验使用这些服务作为存储服务的人的意见,我还需要澄清一下:需求阻止使用任何联机云存储服务虽然我打开任何可以安装在我的数据中心当然!文件存储服务器
文件存储服务器
回答
用MongoDB的,你可以利用:
- replica sets将数据分发到多台服务器
- sharding规模写入(如果适用于数据量并写入你需要管理)
你有几个选项来存储你的二进制文件在MongoDB中:
1)你可以保存fi在MongoDB文档的一个字段中作为二进制数据。当前的文档大小限制(如MongoDB 2.2)为16Mb,这似乎足以满足〜1Mb文件的要求。
2)您可以使用GridFS API方便地处理较大的文档或以较小的块获取二进制文件(另请参阅:Java docs for the GridFS class)。
在mongodb中通过选择gridfs而非二进制文件表示方式会有什么显着的性能差异吗? –
我不知道使用单个二进制字段与GridFS的任何相对性能基准。 [GridFS规范](http://www.mongodb.org/display/DOCS/GridFS+Specification)将文件分割成更小的块(通常为256k),这可以在编写非常大的文件时帮助并发,但确实有一定的开销重新构建文件。 GridFS实现还负责存储文件和元数据,因此很容易实现。对于大约1 MB的文件,在单个文档中处理它们可能会更方便。我会测试两种方法,看看有什么合适的。 – Stennie
- 1. 服务器在哪里存储文件?
- 2. 服务器文件更改后刷新服务器存储库
- 3. Git远程服务器存储库文件存储
- 4. SQL服务器存储过程文档
- 5. 将文件存储在Web服务器内存中-python CGI
- 6. PHP保存/存储文件到远程服务器?
- 7. Azure存储Rest Api文件服务
- 8. 启动文件存储/备份服务
- 9. 编辑存储在服务器上的文本文件
- 10. 下载文件存储在服务器上的文件?如何将文件的下载功能提供给客户端,并在服务器上存储文件?
- 11. 如何从文件转储服务器
- 12. 使用存储(bitbucket服务器)提交文件到git存储库rest api
- 13. 存储文件在SQL vs存储在web服务器的硬盘
- 14. 将svn存储库文件推送到服务器
- 15. Javascript数组存储在服务器端文件中
- 16. 如何在服务器上存储文件?
- 17. Android ODK - 如何将图像存储在文件服务器中?
- 18. 将字段存储为服务器上的txt文件(javascript)
- 19. 短时间在服务器上存储文件
- 20. 访问存储在Heroku服务器上的csv文件
- 21. 如何发送音频文件在服务器中存储
- 22. 将文件存储在apache tomcat服务器的ROOT目录中
- 23. Git删除服务器上不在存储库中的文件
- 24. 基于存储在服务器中的文件生成HTML5
- 25. WAMP服务器在哪里存储数据库文件
- 26. 如何在服务器上存储文件ASP.net
- 27. 将文件存储在spyMemcached服务器中?
- 28. SVN服务器没有显示存储库文件
- 29. 如何安全地在服务器上存储文件
- 30. 如何安全地存储在服务器上的文件
您正在复制的资源文件有多大?这些是否需要最终在应用程序的文件系统中进行操作,还是可以使用直接从数据存储加载的数据? – Stennie
文件通常很小,约1mb。我可以设法直接从数据存储加载资源,我认为这不会是一个问题。 –