海量小文件处理方式——facebook开源的Haystack(二)

举报
敏敏君主 发表于 2021/01/15 18:33:15 2021/01/15
【摘要】 今天来聊聊Haystack三个关键模块的作用。先来张图回忆下Haystack组件架构Haystack Directory主要完成下面4方面的功能:第一、提供逻辑卷和物理卷之间的Map;第二、负责通过逻辑卷写和通过物理卷读之间的平衡;第三、决定图片处理从CDN获取还是Haystack Cache;第四、标识逻辑卷为只读,根据两个因素:1、操作设置为只读;2、卷大小达到上限。Haystack S...

今天来聊聊Haystack三个关键模块的作用。

先来张图回忆下Haystack组件架构

Haystack Directory主要完成下面4方面的功能:

第一、提供逻辑卷和物理卷之间的Map;

第二、负责通过逻辑卷写和通过物理卷读之间的平衡;

第三、决定图片处理从CDN获取还是Haystack Cache;

第四、标识逻辑卷为只读,根据两个因素:1、操作设置为只读;2、卷大小达到上限。

Haystack Store主要负责:

第一、保存图片元数据,比如Key、Alternate Key、 flags、size;

第二、维护逻辑卷和物理卷之间的关系,一般情况是备份三副本;

Haystack Cache主要负责缓存从Haystack Store获取的图片信息。

我们来看看图片写流程

1、用户上传图片到web服务器,web服务器携带逻辑卷ID、key、alternate key、cookie和数据发送给Haystack Directory;

2、Haystack Directory将data存入Haystack store;

3、Haystack Directory在map中新增一条元数据记录。

删除流程

1、同时将Haystack Directory元数据和逻辑卷文件的flags设置为deleted。

注意:并不会真实删除该图片

读流程

1、用户发送访问图片请求到web服务器;

2、web服务器发送请求到Haystack Directory;

3、Haystack Directory将逻辑卷ID、cookie等信息从元数据获取后返回给web服务器;

4、web服务器携带步骤3中的信息发送给Haystack Store;

5、Haystack store将查询到的结果返回web服务器。

安装Haystack组件的文件系统,facebook官方主推XFS。原因是

1、对于几个连续大的图片可以存入小的内存空间;

2、文件预分配,以减少存储碎片并控制块映射的大小


总结一下,Haystack就是解决CDN无法解决的长期被查询的大量小图片速率问题。就是CDN解决方案的一个补充。与我想研究的smallFS场景不一样。smallFS主要是解决HDFS存储大量小文件导致namenode资源耗尽的问题。

下周开始研究HDFS提供的几种海量小文件解决方案

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。