图片服务器

http://www.newsmth.net/bbstcon.php?board=Java&gid=170846&start=170846&pno=2

楼主提的问题刚好我之前做过一些这方面的方案,来说说我的做法,希望能够提供一些帮助。

如果你的所有图片只需要一台存储服务器就能搞定的话可以省去一些步骤,我这里提供一个存储可扩展的方案。

实际需求中比如做一个大型的相册网站,单台存储服务器并不能满足需求,而刚开始投入的预算可能有限,刚开始只有一台服务器用来存储,如果这个存储节点满了之后需要再添加新的存储服务器。

存储服务器理想状态可以配备2块网卡,一块是通过内网以NFS的方式挂载到应用服务器,一块配备一个外网地址供web访问图片使用。

图片上传后先用md5计算出一个值,可以按照这个值进行哈希分布和去重这样的操作。做到应用根据一个图片的md5能直接算出图片URL。

例如一个图片的存储地址可以是:
/st001/53/b0/fb/53b0fbd8bf843bb914ec0cb457d2ceb6.jpg
...
/st005/14/ec/0c/14ec0cb457d2ceb653b0fbd8bf843bb9.jpg

这里 /st* 可以代表一个存储节点。


存储节点上只需安装 lighttpd+lua 来提供http访问就行。

实际应用中达到的数量级:400T+的数据量,文件数量达到十亿级别,存储服务器上百台。

文件系统:xfs + nfs

NFS容易出现的问题:如果存储服务器故障等等会影响到前端挂载机,造成堵塞。

解决办法,编写一个存储服务器的调度程序,包括节点存储量,负载等等。你还可以做数据的多个副本备份。

这是我所知道的目前最经济实用的方案。

你可能感兴趣的:(应用服务器,Web,PHP,lighttpd,lua)