天下数据官网 | 加入收藏 | 网站地图 天下数据新闻资讯平台!
免费定制全球大数据安全解决方案
广告 1000x90
您的当前位置:天下数据IDC资讯 > CDN > CDN资讯 > 正文

对象存储面面观之Haystack

来源:互联网 编辑:shirlyyi 时间:2017-03-21

英文中有句谚语叫做“Find a needle in haystack”,对应中文中的“大海捞针”。Facebook将自己的图片存储系统称为Haystack,也非常形象的暗示了其所面对的挑战和目标场景。

场景与目标

正如上面的谚语所暗示的那样,Haystack面对的是海量的社交图片,具有特殊的数据场景:

  • 海量;
  • 一次写,多次读,从不修改,很少删除;
  • 长尾效应:社交图片特有的,会有大量访问历史旧数据的请求,这个特点对大多数系统中针对热数据的各种优化提出了很大的挑战。

Haystack并不是一个通用、完美的存储系统,而是针对这个特殊的场景的非常简单高效的实现。其设计目标为:高吞吐低延迟、良好容错、高性价不比、简单。

关键思路

传统的存储方式很自然的将每个图片当做一个文件存储在文件系统上,这种做法会给每次图片访问带来至少三次磁盘操作:

  1. 读取目录元信息到内存
  2. 读取inode到内存
  3. 读取真正的数据

这种额外的磁盘消耗在面对海量图片时变了尤为重要,极大的限制了整个系统吞吐的提升。自然的,我们寄希望于我们熟悉的缓存来降低多余的磁盘操作,大多数情况下这种做法总是奏效的,但这次,社交图片的长尾效应摧毁了这种幻想。大量的元信息使得我们没有办法将所有的元数据都加载到内存,从而频繁的对冷数据的访问使得缓存的作用大大降低。

所以Haystack的关键思路就变成:

降低单个图片的元信息量,使得将全部元信息加载到内存成为可能,从而避免读取元信息时的磁盘操作。

这个显著降低元信息数量的方法就是:

将多个图片合并成一个大文件 设计实现

首先从Haystack最关键的查找逻辑中来了解其结构。如图所示,用户请求会先通过Web Server从HayStack Directory中获得指定图片的URL,这个URL结构如下:

http://⟨CDN⟩/⟨Cache⟩/⟨Machine id⟩/⟨Logical volume, Photo⟩

可以看出,DIrectory通过URL告诉客户端,应该去哪个CDN或者Cache中取获取指定的图片,这个图片位置是由机器id,逻辑卷编号节图片id共同标识的。如果幸运用户可以从CDN或Cache中直接获得需要的图片,否则,Cache会首先从HayStack Store中获得这个图片数据。这里Haystack有三个重要的角色:

1, Haystack Directory

顾名思义,Directory担负了类似于操作系统中目录的元信息映射及管理作用:

  • 维护logical volume到physical volume的映射关系:physical volume即是我们上面锁提到的存储多个图片的大文件,通常100G。Haystack又将多个physical volume一起管理,同时写入,称为logical volume。所以可以认为physical volunme是logical volume的存储副本,这里采取3副本。

网友评论:

资讯首页 | IT业界 | 网络安全 | 解决方案 | CDN | 云计算 | 大数据 | 虚拟化 | 操作系统 | 电子商务 | 行业报告

《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号-6

深圳市朗玥科技有限公司版权所有

7×24小时服务热线:4006388808 0755-83460248 7×24小时售后支持:0755-83460017

7×24小时销售热线:0755-83460032 83461241              香港服务电话:+852 67031102

深圳总部:中国.深圳市福田区车公庙苍松大厦北座13层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓

Top