|
浅谈Facebook图片存储系统HayStack概要HayStack是Fackbook用于存储照片的系统,其存储照片的数量在千亿数量级,本文简要分析HayStack的设计与实现原理。 Haystack Directory的主要功能如下: 1, 提供逻辑卷轴到物理卷轴的映射,为写请求分配图片id; 2, 提供负载均衡,为写操作选择逻辑卷轴,读操作选择物理卷轴; 3, 屏蔽CDN服务,可以选择某些图片请求直接走HayStack Cache; 4, 标记某些逻辑卷轴为read-only; HayStack中的图片顺序的存放在物理卷中,获取图片在物理卷中的偏移即可读取图片,图片的存储结构如下所示(每张图片称为一个needle)。 其中,key为图片的唯一标示,alternate key为尺寸的标示,flag为删除标志,size为数据大小,data为实际的数据。 HayStack为每张图片在内存中维护图片与其位置的映射表,在图片被写入时更新映射关系,每次系统启动时可通过读取物理卷并构造映射表,但这样做很耗时间,但HayStack通过为每张图片构造index file来简化了系统启动时映射表的构建,index file的结构如下所示:(其主要包含key与对应图片位置的映射关系,系统启动时,通过读取index file便能很快的构造映射表。) HayStack的几点优势: 1. 采用轻量级的HayStack Directory维护逻辑卷到多个物理卷的映射关系,方便的实现了副本技术,以实现系统容错。 2. 简化文件的元数据结构,以追加写的方式往物理卷中存储图片,效率高。同时将图片key与位置的映射关系全部保留在内存中,通过一次lookup即可获取图片的位置。 3. 物理卷中所有的图片都对应有index文件(固定大小,结构简单),从而每次系统重启时,物理卷的映射信息能快速的通过index文件构建。 4. 引入_deleteflag、compaction、batch upload以及进一步提高存储的效率。 责编:陈慧 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 |
|