您所在的位置:开发 > 架构&设计 > Facebook图片存储架构技术全解析(1)

Facebook图片存储架构技术全解析(1)

2009-05-13 09:10 Alpha 编译 51CTO.com 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

Haystack提出了一种通用的基于HTTP的对象存储,它含有指针,映射到存储对象。在Haystack中以指针储存照片,把数以十万计的图像聚集到一个Haystack存储文件,从而消除了元数据负荷。这就使得元数据的开销非常小,并且使我们能够在存储文件和内存索引中存储每个指针的位置。这就使得能用少量的I/O操作来完成图像数据的检索,可以消除一切不必要的元数据开销。

AD:

【51CTO独家特稿】照片应用程序是Facebook最流行的功能。直至目前为止,Facebook的用户已经上传了超过150万幅照片,这使得Facebook成为最大的照片共享网站。对于每一个上传的照片, Facebook生成并保存成4种不同大小的图像,即总共有60亿的图片占1.5PB的存储容量。目前的增长速度是每星期220万个新照片,即每周消耗25TB的额外存储空间。在高峰期,平均每秒会上传550,000幅图像。这些数字给Facebook的照片存储基础架构带来了严重的挑战。

NFS照片基础架构

旧的照片基础架构包含几个层次:

◆上传层接收用户上传的照片,测量原始图像的大小并将其保存到NFS存储层。

◆照片服务层接收HTTP照片请求,并向用户提供保存于NFS存储层的照片。

◆NFS存储层建立于商业存储设备之上。

由于每个图像存储在自己的文件内,所以根据命名空间目录和文件inode(内节点),在存储层产生了大量的元数据。这些元数据量远远超过了NFS存储层的缓存能力,导致了上传和读取每张照片时成倍的I/O操作。整个照片服务的基础架构由于NFS存储层的大量元数据负荷而成为了一个瓶颈,这就是Facebook严重依赖CDNs来提供照片服务的原因之一。以下两个附加的优化部署,用来在一定程度上减轻这个问题:

Cachr :一个缓存服务层,用来缓存Facebook中较小的“个人资料”图像。

NFS文件句柄缓存——部署在照片服务层,消除了一些NFS存储级元数据负荷

Haystack照片基础架构

新的照片基础架构将照片服务层和存储层合并为一个物理层。它实现了一个基于HTTP的照片服务器,把照片存储在名为Haystack的通用对象中。对于新层次的主要要求是消除任何照片读取操作的不必要的元数据开销,使每个读取I/O操作只是读取实际照片数据(而不是文件系统元数据)。Haystack可划分为以下一些功能层-

◆HTTP服务器

◆照片存储

◆Haystack对象存储

◆文件系统

◆存储设备

以下各节中,我们会自底向上密切关注每一个功能层。

存储设备

Haystack部署于日常存储片之上。一个2U存储片的典型硬件配置的是-

◆2 x 4核CPUs

◆16GB – 32GB内存

◆具有256MB – 512MB NVRAM缓存的硬件RAID控制器

◆12+ 1TB SATA驱动器

每个存储片提供大约10TB的可用空间,配置为一个RAID-6分区,由硬件RAID控制器进行管理。RAID 6提供了足够的冗余性和出色的读取性能,可以降低存储成本。RAID控制器NVRAM回写高速缓存可以部分缓解低劣的写性能。由于读取大多是随机的,所以NVRAM缓存完全保留给写操作。磁盘高速缓存被禁用,以保证在系统崩溃或电源断电时数据的一致性。

内容导航
 第 1 页:两种基础架构比较  第 2 页:文件系统和架构

网友评论TOP5

查看所有评论(

提交评论

  1. 什么是响应式Web设计?
  2. Java路线图:甲骨文的两年计划

热点专题

更多>>

读书

程序员面试宝典
本书取材于各大IT公司历年面试真题(笔试、口试、电话面试、英语面试,以及逻辑测试和智商测试)。详细分析了应聘程序员(含网

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone