用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
heiyeshuwu的公告
<br /> 联系方式:<br /><img src="http://heiyeshuwu.blogchina.com/inc/heiyeluren_gmail_com.png" title='Gmail联系我' /><br /><br /> 访问统计: <!-- Start of StatCounter Code --> <a href="http://www.statcounter.com/" target="_blank"><img src="http://c8.statcounter.com/counter.php?sc_project=928741&amp;java=0&amp;security=b86c0c15&amp;invisible=0" alt="free hit counter code" border="0"></a> <!-- End of StatCounter Code --> <br> FeedSky订阅:<br /> <a href="http://feed.feedsky.com/heiyeluren" target="_blank"><image src="http://www.feedsky.com/images/logo.gif" alt="FeedSky订阅" width="80" heigth="24" border="0"/a><br />
文章分类
::eYou::
kevin world
lewis - 老吕
qyb - BT的花
Realzay的blog
叶金荣
天堂地狱鬼-dulao5's Blog
沙漠之周
狐狸糊涂
與子觀化
鞋门
::Yahoo::
glemir’s blog
happy_fish - 分布式文件系统FastDFS
LinZi's Blog
Rainx
stauren
互联网,请记住我 - 162同学的技术博客
冰的河
北冥之鱼-张彪同学
天韵之星
小蚂蚁同学滴测试博客
随网之舞 - kaven的DHTML博客
风雪之隅
::朋友::
【推荐】中文分类网
DDR的博客
kevin world
miky
PHPCup.cn论坛
俺兄弟的blog
冰河的技术博客:心随风动
好旅网
小少的技术博客
无尘居
晋陵路人的Blog
有米啦
李天华同学滴技术博客
沙狐部落
轻量级的editor
::网友::
blankyao同学
Code & Stock.
Hello, Willko
LionD8的Blog
magiclab.cn
MooPHP - 轻量级PHP框架
Phzzy
Xhttpd.cn
张贺同学的博客
技术大牛老余的博客
抚琴居
旋木木同学滴博客
流水孟春
矛盾网
程序人生
花荣老师
邢红瑞的blog
阿健的博客
::友情链接::
世纪软件测试
:PHP博客:
.: Easy style :.
[琴剑楼]
CoolCode.cn
Haohappy的Blog
Hightman
iwind的blog
Javascript开发站
JD Space
Nio's Weblog
Open Source PHP
PHP面对对象
SourceForge.net
trip的专栏
UGIA.cn
windix's blog
Windix's Weblog
一个藏袍
俊麟 Michael`s blog
偶然的blog
刘敏的blog
大龄青年的Blog
廖宇雷的blog
懒猫开始新生活blog
某人的栖息地
王春生的博客
神仙
:牛人blog:
DBA notes
http://blog.csdn.net/tingya/
侯捷网站
孟岩
搜索引擎研究
方舟
王咏刚的BLOG
竹笋炒肉
荣耀
车东[Blog^2]
透明思考
陈硕的Blog
DHTML
DHTMLGoodies
FCKEditor
Google Code
Google Web Toolkit
HTML Goodies
HTML.it
HTMLAre
HTMLdog
JavaScript Kit
jQuery
KindEditor
Prototype
TinyMCE
W3 Schools
Yahoo JavaScript Developer Center
Yahoo! Developer Network
Yahoo! UI Library (YUI)
网页设计师Web标准
Java国内站
ChinaJavaWorld.com技术论坛
IBM developerWorks 中国: Java
Java中文站
Java开源大全
Java爱好者
JR - Java翻译站
J道-JDON
Matrix: 与Java共舞
中国Java开发网
中文java技术网
PHP国内站点
CSDN PHP论坛
Discuz!
FleaPHP
Google--PHP用户组
IBM DeveloperWorks
JavsScript技术讨论
Nirvana Studio
OpenPHP.cn
PHPChina
TiM Club
中文 PFC 1.0 手册--PHP5的开发包
中文 PFC 1.0 手册--PHP5的开发包
中文PHP网
太平洋--PHP开发区
爱MySQL
超越PHP
PHP国外站点
ADOdb
Agavi Framework
Cake PHP
MySQL Performance Blog
MySQL Performance Blog
Nonaweb
PEAR
PECL
PECL Windows
PHP Builder
PHP Classes
PHP Classes
PHP New Download
PHP Security Consortium
php.MVC
php.MVC
PHPkitchen(OO & MVC)
phpPatterns
PHP国外图书下载
smart template
Smarty
SourceForge.net
Symfony Framework
Zend
Zend Framework
Unix C/C++
Free Gentux
周立发的blog(Linux C)
Unix/Linux
BSD智库
ChinaUnix
FreeBSDChina
FreeLAMP
IBM开发者Linux专区
Linux Byte
LinuxKit
LinuxTS
Linux伊甸园
Linux技术中坚站
Linux非常空间
Love Unix
NetBSD&OpenBSD中文用户组
NetBSD中国社区
Oracle中国用户讨论组
OurLinux
Unix中文
Unix中文
Unix中文宝库
中国Linux公社
中国Unix用户技术论坛
中文FreeBSD用户组
永远的Unix
炎黄角马
程序设计
CSDN
IBM开发者中心
Microsoft TechNet: 主页
MSDN 中文网站
PHP中文站
Sun技术社区
中国IT认证实验室--企业应用技术
中国协议分析网
喜悦国际村
太平洋电脑网---开发特区
实用网站
veBook(国外大量免费图书下载网站)
Whois.net
中国Web信息博物馆
中国互联网络信息中心whois查询
服务器系统信息查看
网络安全
AnySide.com
CGI Secutiry
K-OTik Security Monitoring
Linux Security
Packet Storm Security
PHP Secure
RFC中文文档索引
Safemode.org
SecuriTeam.com
Security Corporation
SecurityFocus
SecurityTracker
Zone-h (区域黑客,每天公布各国被黑的网站)
中华安全网
中国信息安全组织
国家计算机网络应急处理中心
安全天使
安全焦点
幻影旅团
绿盟科技
网络安全评估中心(cnns )
在线手册
Apache2.0中文文档
Beyond Linux From Scratch
Debian参考手册
FreeBSD Porter 手册
FreeBSD使用手册
Linux C函数中文参考手册
MySQL 4.1.0 中文参考手册
NetBSD在线手册
OpenBSD在线FAQ
PHP ADODB 1.99版手册中文翻译(Tripc)
PHP中文手册(国内)
PHP中文手册(国外)
PostgreSQL中文文档
Red Hat Linux 9入门指南
Red Hat Linux 9安装指南
Red Hat Linux 9定制手册
中国OSS技术手册中心
技术文档手册中心-ChinaUnix
存档

转载  [转]Facebook 如何管理150亿张照片 收藏

Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上缩略图,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook 每秒处理55万张照片,这些数字让如何管理这些数据成为一个巨大的挑战。本文由 Facebook 工程师撰写,讲述了他们是如何管理这些照片的。

旧的 NFS 照片架构
老的照片系统架构分以下几个层:
# 上传层接收用户上传的照片并保存在 NFS 存储层。
# 照片服务层接收 HTTP 请求并从 NFS 存储层输出照片。
# NFS存储层建立在商业存储系统之上。

因为每张照片都以文件形式单独存储,这样庞大的照片量导致非常庞大的元数据规模,超过了 NFS 存储层的缓存上限,导致每次招聘请求会上传都包含多次I/O操作。庞大的元数据成为整个照片架构的瓶颈。这就是为什么 Facebook 主要依赖 CDN 的原因。为了解决这些问题,他们做了两项优化:
# Cachr: 一个缓存服务器,缓存 Facebook 的小尺寸用户资料照片。
# NFS文件句柄缓存:部署在照片输出层,以降低 NFS 存储层的元数据开销。

新的 Haystack 照片架构
新的照片架构将输出层和存储层合并为一个物理层,建立在一个基于 HTTP 的照片服务器上,照片存储在一个叫做 haystack 的对象库,以消除照片读取操作中不必要的元数据开销。新架构中,I/O 操作只针对真正的照片数据(而不是文件系统元数据)。haystack 可以细分为以下几个功能层:
# HTTP 服务器
# 照片存储
# Haystack 对象存储
# 文件系统
# 存储空间

存储
Haystack 部署在商业存储刀片服务器上,典型配置为一个2U的服务器,包含:
# 两个4核CPU
# 16GB – 32GB 内存
# 硬件 RAID,含256-512M NVRAM 高速缓存
# 超过12个1TB SATA 硬盘

每个刀片服务器提供大约10TB的存储能力,使用了硬件 RAID-6, RAID 6在保持低成本的基础上实现了很好的性能和冗余。不佳的写性能可以通过高速缓存解决,硬盘缓存被禁用以防止断电损失。
文件系统
Haystack 对象库是建立在10TB容量的单一文件系统之上。文件系统中的每个文件都在一张区块表中对应具体的物理位置,目前使用的文件系统为 XFS。
Haystack 对象库
Haystack 是一个简单的日志结构,存储着其内部数据对象的指针。一个 Haystack 包括两个文件,包括指针和索引文件:



Haystack 对象存储结构



指针和索引文件结构




Haystack 写操作
Haystack 写操作同步将指针追加到 haystack 存储文件,当指针积累到一定程度,就会生成索引写到索引文件。为了降低硬件故障带来的损失,索引文件还会定期写道存储空间中。

Haystack 读操作
传到 haystack 读操作的参数包括指针的偏移量,key,代用Key,Cookie 以及数据尺寸。Haystack 于是根据数据尺寸从文件中读取整个指针。

Haystack 删除操作
删除比较简单,只是在 Haystack 存储的指针上设置一个已删除标志。已经删除的指针和索引的空间并不回收。

照片存储服务器
照片存储服务器负责接受 HTTP 请求,并转换成相应的 Haystack 操作。为了降低I/O操作,该服务器维护着全部 Haystack 中文件索引的缓存。服务器启动时,系统就会将这些索引读到缓存中。由于每个节点都有数百万张照片,必须保证索引的容量不会超过服务器的物理内存。

对于用户上传的图片,系统分配一个64位的独立ID,照片接着被缩放成4种不同尺寸,每种尺寸的图拥有相同的随机 Cookie 和 ID,图片尺寸描述(大,中,小,缩略图)被存在代用key 中。接着上传服务器通知照片存储服务器将这些资料联通图片存储到 haystack 中。

每张图片的索引缓存包含以下数据

Haystack 使用 Google 的开源 sparse hash data 结构以保证内存中的索引缓存尽可能小。
照片存储的写/修改操作
写操作将照片数据写到 Haystack 存储并更新内存中的索引。如果索引中已经包含相同的 Key,说明是修改操作。

照片存储的读操作
传递到 Haystack 的参数包括 Haystack ID,照片的 Key, 尺寸以及 Cookie,服务器从缓存中查找并到 Haystack 中读取真正的数据。

照片存储的删除操作
通知 Haystack 执行删除操作之后,内存中的索引缓存会被更新,将便宜量设置为0,表示照片已被删除。

重新捆扎
重新捆扎会复制并建立新的 Haystack,期间,略过那些已经删除的照片的数据,并重新建立内存中的索引缓存。

HTTP 服务器
Http 框架使用的是简单的 evhttp 服务器。使用多线程,每个线程都可以单独处理一个 HTTP 请求。

结束语
Haystack 是一个基于 HTTP 的对象存储,包含指向实体数据的指针,该架构消除了文件系统元数据的开销,并实现将全部索引直接存储到缓存,以最小的 I/O 操作实现对照片的存储和读取。

本文国际来源:http://www.facebook.com/FacebookEngineering#/note.php?note_id=76191543919&ref=mf
中文翻译来源:COMSHARP CMS 官方网站

发表于 @ 2009年05月01日 14:45:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:[转]图解用WAS对Web服务器进行压力测试 | 新一篇:[转]inotify + rsync实现linux文件实时同步

  • 发表评论
  • 评论内容:
  •  
Copyright © heiyeshuwu
Powered by CSDN Blog