2013-09-25 54 views
0

我已經閱讀了許多有關在服務器端保存圖像或數據庫文件系統中的問題/評論。但是我仍然感到困惑。現在,我允許用戶上傳圖片(限制爲10MB),並將圖片保存在服務器文件夾中,並通過指向該位置的apache上下文路徑配置來提供圖片。但是,由於圖像數量和高負荷。我們希望提供負載平衡和故障轉移功能。所以我有2個選項。圖像服務器性能

  1. 添加代碼以將上傳的圖像複製到所有服務器或使用rsync來執行此操作。
  2. 使用CouchDB或MongoDB並將圖像另存爲文檔的附件。所以我具有開箱即用的功能。

誰能告訴我這些方法的優點/缺點。與文件系統相比,CouchDB/MongoDB可以具有相同的讀取性能嗎?

回答

0

您還可以將文件存儲在分佈式文件系統中。與數據庫支持的映像服務器相比,您無需更改應用程序。顯然,以相同方式存儲所有數據(包括圖像)可能對您有益,但更改已經工作的系統的體系結構可能也存在問題。

例如,GlusterFS可以安裝在「正常」的文件系統給你分配的功能最大限度地減少更改系統本身的頂部。它應該通過它的插件(翻譯器)支持雲系統可能期望的所有功能:複製,負載平衡,文件剝離到重定位部分和故障轉移。

+0

是的,我也看一些開源比如然而mogileFS,GlusterFS或CODA,它tooks長的學習曲線開始,有時我不知道從哪裏開始,因爲缺乏文件。我的簡單解決方案仍然可以正常工作,但是當我想擴展時會出現問題。使用CounchDB或MongoDB可以提供我所需的可擴展性。但是,由於聲譽不佳,仍然害怕將圖像存儲在數據庫中。 –

0

與文件系統相比,CouchDB/MongoDB具有相同的讀取性能嗎?

不,文件系統計時器和數據庫計時器之間會有滯後,這是一個不幸的現實。

我沒有你的當前設置,負載和性能,所以我真的不能建議就做什麼的想法,但是,Apache是​​不是一個真正的良好形象服務器反正。

你最好的選擇可能是尋找到一個CDN緩存爲你的形象。

+0

親愛的Sammaye,我的應用程序只允許用戶上傳圖像(tif,jpg,png)並返回稍後使用的URL。因此,我將上傳的圖像保存在服務器端位置,例如/ home/hieulam/images,然後添加一個上下文根以指向該位置以提供圖像。與Apache相比,Nginx可以提高性能嗎? –

+0

@HieuLam是的,特別是有正確的緩存機制 – Sammaye