淘宝图片存储架构
今天中午花一小时看了下章文嵩博士写的<淘宝海量图片存储与CDN系统>,没有做过大容量的存储系统,也没有做过分布式的应用,只是从学习的角度去思考下未来可能学习的方向和一些点.
对比公司的图片服务,其实在技术实现上都有共性:
1:imageserver:
(1)缓存和图片处理
具体使用apache和nginx都无所谓,imageserver的负载在于图片的转换,以及部分中间缓存的读取.
GraphicsMagick可以未来尝试使用,另外为提高imageserver的命中率通过lvs做七层的定位.
最核心的是使用nginx编写的图片处理和具有缓存功能的模块.
我们目前使用的是本地文件做缓存,稍微差了点.
(2)压缩比
imageserver核心的一个功能是图片处理,对于专业类的图片网站,是比较重视图片质量的.一般对于后缀名和动态gif压缩的时候都需要注意
(3)L1缓存
一般imageserver称为L1缓存,注意其的图片索引策略和读取磁盘方式.
2:TFS
图片服务最重要的就是后端的存储系统,有这么几个特点:
(1)容量的无限增长.
(2)读取量极大,高随机iops和吞吐量.
(3)后端存储的备份,容灾,迁移策略.在数据量激增的情况下能够比较方便的扩容.
(4)均衡策略,比如数据具体的存储和读取策略
类似这样的需求一般可以购买高端的阵列来解决(我们公司就是这样做的),我想tfs的存在主要在于成本的解决.
其中有二个重要特性:
(1)元数据的使用:主要是图片meta数据同具体存储位置的定位,一般可以通过memcachedb和mysql来解决.
元数据的存在能够是存储量大大减少(比如很多用户都会上传同样的图)
(2)小文件存储的一些特点,经常听到块的概念(比如memcached)
成本也是tfs存在的主要原因:主要通过普通pc做横向扩展,普通的exts文件系统,raid5做数据冗余
查看下tfs2的计划:主要还在于锦上添花的功能,比如分配存储,分级存储机制...
3:CDN
开始有点疑惑,一直认为这是图片架构的一部分,其实是独立于图片架构的,说到底是前端的Squid.
仔细看CDN,其实主要解决的是下面几个问题:
(1)节点的可伸缩性
(2)调度系统
(3)灵活性:主要使用一致性hash
(4)Squid的内存优化策略和淘汰策略优化
其中比较有特点的是:
(1)sendfile发送方式和SSD的使用.
CDN主要的特点:
(1)命中率
(2)定制化和快速部署,离用户更近的小节点.
4:产品层面,技术层面感兴趣的几点:
(1)明天图片上传数量,平均图片大小,普遍图片策略
(2)L1,L2和存储设备的iops和带宽,吞吐量.容量大下
(3)各级缓存的命中率.
几个概念:
iops:每秒i/o操作次数
sas:设备读取接口方式
rpm:每分钟磁盘转速
DELL R710
后记:
对于大型网站,主要处理的数据,所以一个后端存储系统的重要性不言自明.
建议继续学习:
- HFile存储格式 (阅读:14537)
- 图片动态局部毛玻璃模糊效果的实现 (阅读:13590)
- 我对技术方向的一些反思 (阅读:9871)
- 海量小文件存储 (阅读:7557)
- 解决IE6从Nginx服务器下载图片不Cache的Bug (阅读:7096)
- HBase技术介绍 (阅读:6757)
- When we`re only No.2, we try harder之聊天表情设计小探讨 (阅读:6506)
- 精于图片处理的10款jQuery插件 (阅读:6219)
- 存储基础知识之——硬盘接口简述 (阅读:6156)
- phpThumb:强大的缩微图类 (阅读:5459)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ywdblog 来源: 技术 总结 记录 生活 工作
- 标签: 图片 存储 淘宝
- 发布时间:2010-06-28 23:55:50
- [55] Oracle MTS模式下 进程地址与会话信
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [52] android 开发入门
- [52] Go Reflect 性能
- [51] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 【社会化设计】自我(self)部分――欢迎区
- [39] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑