2013-11-27 46 views
1

通常在開發網站時,我希望儘可能地保留網絡服務器。我嘗試將配置詳細信息,會話數據等存儲在數據庫後端。這使我可以根據需要輕鬆地重新構建Web服務器,或者根據需要從理論上添加更多的Web服務器。網頁架構 - 何處放置上傳的二進制數據

我遇到的一個問題是客戶端上傳圖像數據或二進制文件。我傾向於將這些文件存儲在Web服務器上,而不是放入數據庫中。但是,這個問題是我需要從Web服務器備份這些數據,而我並不喜歡這些數據。

我寧願讓Web服務器只提供數據,但不能存儲它。我已經看過了一些選項,例如將文件傳輸到另一組Web服務器上,這些服務器僅充當內容交付服務器(無腳本或處理它們)或將客戶端數據放入數據庫的blob中。我想過的另一個選擇是將文件放到特定的文件服務器上,就像在局域網上一樣,然後將文件服務器上的共享掛載到網絡服務器上,並讓網絡服務器直接傳送文件。我甚至考慮將它放入一個Hadoop風格的HDFS分佈式文件系統,然後讓網絡服務器將它從那裏拉出來,但沒有一個看起來非常正確。

無論如何,在存儲客戶端提供的二進制數據(如圖像或文檔)時,通常認爲什麼是最佳實踐?

我更喜歡通用的Web架構類型響應/方法,而不僅僅是某種特定語言可能鼓勵或推動某種解決方案的方式。但是,如果您可以比較和對比由許多不同語言/庫推廣的方法,那麼知道這一點也會非常有趣。

+1

在數據庫中添加這些文件不是一個選項嗎? –

+0

這是一個選項,實際上它們都是可能的。這更多的是被認爲是「良好實踐」的案例,從網站設計的角度來看,這被認爲是「不好的做法」。顯然,每個都需要考慮諸如成本,易於開發,可擴展性等不同的因素。 –

+0

數據庫或雲(亞馬遜s3),支持後者 – MikeSW

回答

0

正如MikeSW在上面評論中提到的那樣,我會推薦使用Amazon S3,它將充當集中和可靠的二進制存儲器,可以從所有Web服務器訪問。但是,請記住它們的"consistency model"

+0

謝謝你的回答,但是這不像一個產品那樣是一個建築解決方案。 S3在互聯網上工作得很好,但是對於數據必須保密的Intranet來說呢。在存入S3之前將上傳內容嵌入到S3中並不是很理想。我真的在尋找一個架構解決方案,但是我認爲迄今爲止的共識是數據放置在Web服務器之外的「數據庫」中。這可能是S3或者像DB,如CloudStack,Nimbula,Riak,Eucalyptus等封閉的私有云。 –