刚刚上的独立的图片服务器,目前总共图片数量在25000左右,加上每张图片的10几个缩略图,大概有30w的图片数量,全部存在了一个文件夹中,用nginx作为web server,后面用tomcat处理动态图片的请求。现在要上一批新图片,总量在50w,加上缩略图,文件数量在百万到千万级别,如何更好的设计文件结构,能够使查找的效率最优化?
2 回答
HUWWW
TA贡献1874条经验 获得超12个赞
以前我做过一个类似的项目,也是nginx做web server;tomcat做动态请求
我的文件组织分了三层
url这样:
http://example.com/年/月/[00-FF]随机码_widthxheight.jpeg
目录结构是:
年份 |_ 月份 |_ 00 |_ 01 |_ ... |_ FF
一张图片上传,00-FF的目录哈希的
另外,有一个要注意的是,同一个文件夹下的文件个数不宜太多,否则读取文件的速度会变慢。
很早以前,Linux Ext2还是Ext3我忘了,测试 单目录 3000 文件是个瓶颈
缥缈止盈
TA贡献2041条经验 获得超4个赞
如果直接存储在文件系统,MD5做hash,3级目录完全可以满足图片日后图片增长需要,也可以避免图片重复存储的问题。用md5值来索引查找。
/ab/cd/ef/abcd....xx.jpg
存储容量可以达到36^6*1024个文件
图片服务器只要保存原图既可以了,缩略图、水印等可以根据请求用ImageMagick生成。这样可以分布到别的服务器,方便迁移等
/800x600/ab/cd/ef/abcd....xx.jpg
/400x300/ab/cd/ef/abcd....xx.jpg
......
- 2 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消