图片存储架构

图片存储方式有四种:

1. 二进制列存储

这种方式主要是用数据库存储,很多关系数据库都支持二进制类型的列,可以把图片转换成二进制,然后存放起来,如果硬要使用这种方式,最好办法使用nosql 产品来存储这种二进制图片

2. 文件路径

把图片的相对路径存储在数据库表中,把图片或文件存在在本地文件系统中,然后使用负载均衡器(nginx或apache等)来定位这些图片文件。

3. 图片服务器

单独的服务器用来存放图片,单独的域名空间,使用某些特殊的文件系统(TFS,GFS等)。

图片有很多类型,小图片,大图片,有些图片是有关联系,通常一起使用,有的是产品图,有的是系统图片,有的是用户上传的,有的是平台管理的。

针对不同类型的图片,需要不同的文件系统,有些文件因为显示的时候都是一起显示的,可能需要存放在一起,减少寻道时间,加快IO速度,提高读取效率。

4. 分布式存储

这种方式选择目前一些存储产品:MongoDB GridFS,目前这种方式构建起来是最复杂,并且需要程序方面的改动,要定义一些文件编号规则。。。

图片越来越多,请求越来越多,提高可用性,提高并行执行,会需要分布式文件系统,实现分布式图片服务,而且图片服务对外应该是存储无关的,路径无关。

外界只是需要存储图片,图片的类型,大小,图片之间的关联,使用频率,是否需要生成缩略图等等业务相关的需求。

图片服务负责具体的存储,存储的类型,位置,路径,返回外界一个唯一的编号就可以了。

当然编号可以设计成有含义的,3位一个含义,比如说:所属子系统,所属类型,相关性,权限,是否允许外链等等。

猜你喜欢

转载自strongant.iteye.com/blog/2152371