图片存储架构二

说下思路:


在图片存放的时候:

有些表存放图片的索引,可以在mysql中定义也可以在mongodb中定义,结构大致是这样的:

1.图片key:可以是自增主键,最好是uuid,或是其他的生成策略来保证它在唯一,即使在集群环境中也能保证。
2.mongodbName :指定图片是放在哪个库里面的
3.buckt_name:指定放在哪个桶里
4.mongodb_id 在存入到库里面的时候,返回的一个值
5.md5_code: 对存入的图片的进行md5加密,这用来过虑图片,临时想到的,因为在下载东西的时候有一些md5码,我想这是很高效的加密算法,而且对如再大的方件加密后也32位
6,cache_path:图片的缓存路径,这个路径可以是我们在现有memcache上提供统一的接口,也可以再做一个单独的文件系统,用来做专门的图片存放,这在以后会用到,因为随着应用的流行,用户会猛增。
7.min_pic_id:缩略图的id,用于存放缩略图,不再对缩略图进行分开存放。

以上是索引表的定义,有了它,我可以方便的进行文件的存放,文件的管理也很有序,很方便对各项业务数据量进行文件的统计(因为在建库建桶的时候它应该是与业务相关的),文件查询方便,可以直接定位图片位置,有效的过虑重复图片。

在我定义的图片接口中可以很快定位,为加快提取效率,提供单独的文件服务系统,只要把文件系统中文件的路径放在cache_path列里面,到时候我们的图片被分为两个独立的服务来提供。

一个是:/{request_context}/{mongodb_name}/{bucket_name}/{id} 它专门为移动设备提供图片读取服务 
另一个是:/{request_context}/{mongodb_name}/{bucket_name}/{id.jpg} 它以文件的形式放在文件系统中提供图片服务
 

猜你喜欢

转载自gege-s.iteye.com/blog/1500304