Facebook的图片存储

简介: 为了减少对昂贵的存储解决方案(诸如NetApp和Akamai,我所在的单位用了一套NetApp,性能和稳定性都不错,价格当然也不菲),Facebook在2009年4月的时候推出了一套新的,名为Haystack的图片存储系统,来一个对每个月85亿次的图片上传(每天500G)。

为了减少对昂贵的存储解决方案(诸如NetAppAkamai,我所在的单位用了一套NetApp,性能和稳定性都不错,价格当然也不菲),Facebook在2009年4月的时候推出了一套新的,名为Haystack的图片存储系统,来一个对每个月85亿次的图片上传(每天500G)。

Jason Sobel,NetApp的前工程师主持了这次改造,基本的架构来自于2008年的 Stanford ACM presentation by Jason Sobel。新的架构让Facebook使用普通的服务器就能够支撑图片存储的需求,减少了对CDN的依赖。

image

Facebook有两种主要的图片存储类型,也是所有社交网站共同的特点:头像和相册。用户上传相册,以档案的形式存放,很少会删除,也不会立即读取。头像则是每个人都会拥有,并且有不同的尺寸。过去,Facebook极度依赖CDN来保护自己的服务器遭受大量的访问。

头像则使用了 Cachr ,一个使用 evhttp 和 memcached 后台的图片服务器,能够缓存那些被大量访问的图片。

不需要POSIX

Facebook的图片被世界各地的人们浏览,图片命名也包含了很多有用的信息。

/[pvid]_[key]_[magic]_[size].jpg

传统的文件系统被POSIX标准通知,每个文件都需要有元数据和进入方法。这种文件系统是为了权限管理而设计的,但是Internet中的文件系统则不需要这么多额外的信息。

  • File length
  • Device ID
  • Storage block pointers
  • File owner
  • Group owner
  • Access rights on each assignment: read, write execute
  • Change time
  • Modification time
  • Last access time
  • Reference counts

 

image

Haystack 存储10GB的数据只需要10Mb的元数据,这些原数据可以驻留在内存中,这样读取文件的时候就只需要一次磁盘寻道。Cachr仍然是第一道防线,快速的处理对于图片的请求。

 

 

参考资料:

1、Facebook’s photo storage rewrite

相关文章
|
小程序 前端开发 JavaScript
微信小程序框架---详细教程
微信小程序框架---详细教程
571 0
|
索引 Python
Numpy 高级(三)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy 高级,学习之前需要学习:NumPy入门
744 0
Numpy 高级(三)
|
存储 分布式计算 监控
揭秘阿里云EMR:如何巧妙降低你的数据湖成本,让大数据不再昂贵?
【8月更文挑战第26天】阿里云EMR是一种高效的大数据处理服务,助力企业优化数据湖的成本效益。它提供弹性计算资源,支持根据需求调整规模;兼容并优化了Hadoop、Spark等开源工具,提升性能同时降低资源消耗。借助DataWorks及Data Lake Formation等工具,EMR简化了数据湖构建与管理流程,实现了数据的统一化治理。此外,EMR还支持OSS、Table Store等多种存储选项,并配备监控优化工具,确保数据处理流程高效稳定。通过这些措施,EMR帮助企业显著降低了数据处理和存储成本。
433 3
|
芯片 异构计算 算法
芯片验证 | Formal验证技术总结
芯片验证 | Formal验证技术总结
483 0
芯片验证 | Formal验证技术总结
|
存储 算法 Java
【分布式】Zookeeper 使用环境搭建
【1月更文挑战第25天】【分布式】Zookeeper 使用环境搭建
|
传感器 监控 安全
物联网技术在智能家居安全监控中的应用
物联网技术在智能家居安全监控中的应用
|
运维 程序员 开发者
安装python详细步骤(超详细,保姆级,一步一图)
安装python详细步骤(超详细,保姆级,一步一图)
394 0
|
存储 资源调度 Kubernetes
K8S Pod解析
上篇文章我们在解析K8S Container时,提到Pod的整个生命周期都是围绕“容器”这个核心进行运转,毕竟,Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元,只有弄清楚其底层原理以及实现细节,我们才能够对Kubernetes生态体系有所了解。
305 0
K8S Pod解析
|
Unix Linux 测试技术
中科院发布国产 RISC-V 处理器“香山”:已成功运行 Linux/Debian
中科院发布国产 RISC-V 处理器“香山”:已成功运行 Linux/Debian
779 0
中科院发布国产 RISC-V 处理器“香山”:已成功运行 Linux/Debian
|
存储 缓存 监控
微服务实践01--微服务管理11--缓存01--技术
微服务实践01--微服务管理11--缓存01--技术
346 0
微服务实践01--微服务管理11--缓存01--技术