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 来源:知乎 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
相关文章
相关标签/搜索