我正在尋找更清晰的方式來在對源代碼和基礎結構影響最小的情況下水平擴展我的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。我可以設法直接從數據存儲加載資源,我認爲這不會是一個問題。 –