浅谈Facebook图片存储系统HayStack概要
张友东 发表于:11年05月16日 00:42 [转载] IT168
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便能很快的构造映射表。)

