一次图片存储库迁移方案整理

发布: 2012-10-17 10:08

图片存储库迁移方案

需求:

1)新的图片直接放在新图片存储库中

2)原有的图片迁移到新图上存储库中

3)对原有图片的地址必须做兼容处理


对于新图片的处理功能,是没有问题的。

现在着重考虑后面两个需求。


原有图片迁移步骤,

×)在原有系统导出一个迁移图片列表

列表内容需要包含老图片的url,文件大小,文件类型信息,老图片在磁盘上的存储路径

×)在新图片库中对列表进行二次处理

生成列表中图片在新图片库中存储位置,合并成一个文件

并把列表信息导入到图片库数据库中

×)在存储服务器上对列表遍历,把存储的图片路径从老的位置移动到新的位置

这样效率从通过接口走效率要高些。

×)原业务系统遍历二次处理的列表,更新其业务系统数据库,存储老图地址到新图地址的映射关系。

×)删除存储的老图


如果在没有写死的图片地址的情况下,这样迁移就可以了。

但对于目前这种情况,有些新闻等附图文章中,

很多使用了老图的完整url,根本就不可能修改的。

对于这部分老图url的解决方案,必须涉及到域名指向的修改、

squid后端404重定向的修改,以及新图片库中对老图片路径与新图片路径兼容转换的处理。

具体步骤整理如下:

×)修改图片系统apache配置,让新图片虚拟主机支持老图片用到的所有域名

ServerAlias oldimg.example.com
ServerAlias oldimg2.example.com

×)修改图片系统apache配置,将老的图片地址转发到兼容路由入口


RewriteCond %{HTTP_HOST} !^newimg.example.com
RewriteCond %{HTTP_HOST} !^newimg2.example.com

RewriteRule (.*) http://newimg.example.com/migration/coswitcher?host=%{HTTP_HOST}&path=$1 [P]
×)设计并实现新旧url兼容路由器程序coswitcher


×)修改前端squid配置,在404图片时,转发到newimg.example.com服务器上

×)或者通过修改老域名oldimg.example.com,直接指向newimg.example.com服务器上。


对老图片url兼容并实现路由映射转换是有一定代价的,

除去图片文件迁移工作不算,在效率上也有一些折扣。

一张使用老地址的老图片,

在访问过程中,相比正常的新图片url访问,

会多一次squid上的404跳转,多一次映射查询,一次url重写。

这部分代价估计总耗时在50-100ms。

好处在于对老图片url的完全兼容,原有使用到老图片url地址的所有地方不需要任何需要。

图片库成了无所不能的怪兽,接下来的工作怎么保持、加强怪兽系统的系统维护工作了。



原文: http://qtchina.tk/?q=node/692

Powered by zexport