MongoDB 搭建文件存儲的方案

用雲的話,節省你開發成本,快速上線,數據比較安全。缺點是一旦用了他們的,造成習慣之後,數據想遷移就會比較麻煩,你會愈來愈依賴,並且規模上去之後價格並不低。
早年本身作的話,你須要實現分佈式文件系統,這個會比較費時間,一些開源的框架又不太靠譜,或者太龐大。不果如今好了,MongoDB 3.0出來了。php

用戶讀請求(HTTP GET) -> CDN -> Varnish -> PHP -> MongoDB Cluster
用戶寫請求(HTTP PUT) -> Varnish -> PHP -> MongoDB Cluster前端

機房佈局:中心IDC(雙線/BGP) PHP + MongoDB Cluster
邊緣節點:Varnish散佈在電信、聯通,移動。通常能夠租 VPS來架設 varnish。git

緩存超時:注意在 HTTP頭部控制好 Max-Age等超時時間,好比404超時,緩存20秒便可。github

你本身作的話,能夠考慮下 MongoDB 3.0 WiredTiger引擎 + PHP來作數據存儲,數據按照 crc32的 hash存到32個不一樣的 collection裏面,而後按照文件名來作 shard key,幾百行就搞定了,前端加個CDN。把 MongoDB作後端存儲,負責分佈式和冗餘。你前端接個 PHP+ varnish作緩存,性能和 openstack swift差很少,若是外面再加上 CDN的話,你不用小心訪問量了。mongodb

-----------------
上面是完備的方案,你若是隻弄個什麼校內比賽,你直接php存磁盤上就好了嘛,而後返回個 HTTP URL就得了,注意下 HTTP超時和續傳。
 
開源項目參考: 基於 MongoDB 的文件服務器 
 
做者:韋易笑 連接:https://www.zhihu.com/question/30060755/answer/46618166 來源:知乎 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索