- 浏览: 523431 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
2010年6月,Google公布全球Top 1000网站。Facebook独占鳌头。
以Facebook现在的经营规模,诸多传统服务器的技术均将崩溃或根本无法支撑。那么面对5亿的活跃用户,Facebook的工程师们又将如何让网站平稳运转呢?伯乐在线
- 职场博客的这篇文章将展示Facebook的工程师完成这个艰巨任务所用到的一系列软件。
Facebook级别规模的挑战
在我们深入细节之前,先了解一组Facebook不得不面对数据,你就可以想象这种规模。
- Facebook每月的PV量:630,000,000,000 (6万3千亿)
- Facebook上的图片数量超过其他图片网站的总和(包括诸如Flickr这样的图片网站)
- 每个月有超过30亿的图片上传到Facebook
- Facebook系统每秒可以处理120万张图片。这还不包括Facebook的CDN处理的图片。
- 每月处理超过250亿的信息内容(包括用户状态更新,评论等)
- Facebook的服务器数量超过3万台(此数据为2009年的数据)
Facebook所用的软件
从某些方面来说,Facebook还是属于LAMP类型网站,但是,为了配合其他大量的组件和服务,Facebook对已有的方法,已经做了必要的改变、拓展和修改。
比如:
- Facebook依然使用PHP,但Facebook已重建新的编译器,以满足在其Web服务器上加载本地代码,从而提升性能;
- Facebook使用Linux系统,但为了自身目的,也已做了必要的优化。(尤其是在网络吞吐量方面);
- Facebook使用MySQL,但也对其做优化。
还有定制的系统,比如, Haystack -- 高度可扩展的对象存储,用来处理Facebook的庞大的图片;Scribe --
Facebook的日志系统。
下面展现给大家的是,全球最大的社交网站Facebook所使用到的软件。
Memcached
Memcached是一款相当有名的软件。它是分布式内存缓存系统。Facebook(还有大量的网站)用它作为Web服务器和MySQL服务器之间的缓存层。经过多年,Facebook已在Memcached和其相关软件(比如,网络栈)上做了大量优化工作。
Facebook运行着成千上万的Memcached服务器,借以及时处理TB级的缓存数据。可以这样说,Facebook拥有全球最大的Memcached设备。
HipHop for PHP
和运行在本地服务器上代码相比,PHP的运行速度相对较慢。HipHop把PHP代码转换成C++代码,提高编译时的性能。因为Facebook很依赖PHP来处理信息,有了HipHop,Facebook在Web服务器方面更是如虎添翼。
HipHop诞生过程:在Facebook,一小组工程师(最初是3位)用了18个月研发而成。
Haystack
Haystack是Facebook高性能的图片存储/检索系统。(严格来说,Haystack是一对象存储,所以它不一定要存储图片。)Haystack的工作量超大。Facebook上有超过2百亿张图片,每张图片以四种不同分辨率保存,所以,Facebook有超过8百亿张图片。
Haystack的作用不单是处理大量的图片,它的性能才是亮点。我们在前面已提到,Facebook每秒大概处理120万张图片,这个数据并不包括其CDN处理的图片数。这可是个惊人的数据!!!
BigPipe
BigPipe是Facebook开发的动态网页处理系统。为了达到最优,Facebook用它来处理每个网页的分块(也称“Pagelets”)。
比如,聊天窗口是独立检索的,新闻源也是独立检索的。这些Pagelets是可以并发检索,性能也随之提高。如此,即使网站的某部分停用或崩溃后,用户依然可以使用。
Cassandra
Cassandra是一个没有单点故障的分布式存储系统。它是前NoSQL运动的成员之一,现已开源(已加入Apache工程)。Facebook用它来做邮箱搜索。
除了Facebook之外,Cassandra也适用于很多其他服务,比如Digg。
Scribe
Scribe是个灵活多变的日志系统,Facebook把它用于多种内部用途。Scribe用途:处理Facebook级别日志,一旦有新的日志分类生成,Scribe将自动处理。(Facebook有上百个日志分类)。
Hadoop and Hive
Hadoop是款开源Map/Reduce框架,它可以轻松处理海量数据。Facebook用它来做数据分析。(前面就说到了,Facebook的数据量是超海量的。)Hive起源于Facebook,Hive可以使用SQL查询,让非程序员比较容易使用Hadoop。(注1:
Hive是是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为
MapReduce任务进行运行。 )
Thrift
Facebook在其不同的服务中,使用了不同的语言。比如:
PHP用在前端,Erlang用于聊天系统,Java和C++用于其它地方,等等。Thrift是内部开发的跨语言的框架,把不同的语言绑定在一起,使之可以相互“交流”。这就让Facebook的跨语言开发,变得比较轻松。
Facebook已把Thrift开源,Thrift支持的语言种类将更多。
Varnish
Varnish是一个HTTP加速器,担当负载均衡角色,同时也用于快速处理缓存内容。
Facebook用Varnish处理图片和用户照片,每天都要处理十亿级的请求。和Facebook其他的应用应用一样,Varnish也是开源的。
Facebook可以平稳运行,还得利于其他方面
虽然上面已经提到了一些构成Facebook系统的软件,但是处理如此庞大的系统,本身就是一项复杂的任务。所以,下面还将列出使Facebook能平稳运行的一些东西。
逐步发布&暗启动
Facebook有一个系统,他们称之为“门卫”。该系统可以针对不同种类的用户运行不同的代码。(它简单介绍了代码库中的不同条件。)该系统让Facebook逐步发布新特性、A/B测试、激活仅针对Facebook员工的特性
等等。
门卫系统也让Facebook做些“暗启动”的事情。比如,在某一特性上线之前,可以激活该特性背后的元件。另外,它还可以做模拟压力测试,发现瓶颈和潜在的问题。默默启动一般都是在正式启动之前的2周完成。
实时系统的简介
Facebook会仔细监控自身系统,有趣的是,它还监控每个PHP函数在实时生产环境下的性能。这一实时PHP环境监控是通过一个叫XHProf的开源工具完成的。
逐步禁用某些特性,借以提高性能
如果Facebook遇到性能问题,Facebook有大量的途径来逐步禁用不很重要的特性,以提高其核心特性性能。
尚未提到的东西
虽然这里无法过多深入硬件方面,但硬件绝对是Facebook能达到空前规模的重要因素。比如,和其他大型网站一样,Facebook也用CDN来处理静态内容。Facebook还在美国西部的俄勒冈州建有一超大的数据中心,可以随时增加服务器。
当然了,除了前面已经提到的,还有其他大量的软件没有说到。但是,希望能突出其中非常有特色的。
Facebook和开源之间的“恋情”
Facebook和开源之间联系,此文不能不提,虽不能说Facebook是多么地钟爱开源,但至少可以这样说,Facebook是“爱”着开源的。
Facebook不仅使用(也捐赠)开源软件,比如,Linux、Memcached、MySQL、Hadoop等等,它还内部开发不少软件,并且也将之开源。
Facebook开发的开源工程,包括HipHop、Cassandra、Thrift和Scribe。另外,Facebook也把Tornado开源了。Tornado是一个高性能的Web服务器框架,由FriendFeed幕后团队开发而成。(2009年8月,Facebook收购
FriendFeed。)
(Facebook所用到的开源软件,可以在Facebook的开源页面找到。)
面临更多的大规模挑战
Facebook以一种令人难以置信的速度成长。它的用户群几乎是成倍增加,活跃用户数量现已接近5亿。而且,谁都无法预测今年底,活跃用户量会到多少。
Facebook甚至成立了一个专门的“成长小组”,该小组不断思考如何让人们使用facebook并融入到facebook中。
这一快速成长,意味着Facebook将遇到不同的性能瓶颈。Facebook会面临来这如下方面的挑战:PV、搜索、上传的图片和状态消息,用户之间的交互和用户和Facebook之间的交互带来的挑战。
这也是Facebook面对的事实。Facebook的工程师们将继续寻求新方法来扩展(这不只是增加服务器的问题了)。比如,随着网站成长,其图片存储系统已经多次完全重写。
所以,我们将看到Facebook的工程师们奔向下一个“山头”。我们相信他们不会辜负众望。毕竟,他们正跨越山头,那个我们大多数人仅能向往的山头;他们正扩展网站,那个用户来自全球各地的网站。当你实现那个里程碑时,你将彪炳史册。
发表评论
-
Spring + iBatis 的多库横向切分简易解决思路2
2011-12-26 16:43 2097Table of Contents I. 向Co ... -
Spring + iBatis 的多库横向切分简易解决思路
2011-12-26 16:36 11721.引言 笔者最近在做一个互联网的“类SNS” ... -
tomcat端口被长时间连接,CPU使用率高的原因分析
2011-11-20 23:50 1086tomcat使用的是电脑的80端口。 当客户端访问的 ... -
Nginx+keepalived做双机热备加tomcat负载均衡
2011-10-25 16:55 1682环境说明: nginx1: 192.168.2.4 ... -
MySQL 6.0 集群(cluster)+复制(replicate)
2011-05-05 02:08 1489http://www.net5 . 简介 本 ... -
centos下MySQL主从同步配置
2011-05-05 00:38 1052一、环境 主机: ... -
HadHoop分布式框架配置(二)
2011-03-16 21:42 1171我们假定,你已经下 ... -
HadHoop分布式框架简介(一)
2011-03-16 21:42 1496分布式系统基本原理 分布式系统被设计成可以存 ... -
利用nginx+apache+mysql+php+memcached+squid搭建门户网站
2011-03-06 04:27 1492转自:http://hi.csdn.net/rushcc200 ... -
CentOS 5.3上安装Apache+php+Mysql+phpMyAdmin
2011-03-03 22:00 11211、系统下载 CentOS 开发社区已发布了新的 5.3 版 ... -
1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
2011-03-03 21:58 1343PHP 5.3.1 MySQL 5.0.89 Ngin ... -
集群和数据库负载均衡的研究
2011-03-01 03:34 1771http://dadupi.blogbus.com/logs/ ... -
Memcached集群/分布式的单点故障
2011-03-01 03:24 1937我看到过这样一段文字 “memcached如何处理容错的? ... -
Memcached 集群架构问题归纳
2011-03-01 02:54 1035集群架构方面的问题 o memcached是怎么工作的 ... -
大型bbs架构(squid+nginx)实例分享
2011-03-01 01:50 1532这个架构 基于squid、nginx 和lvs等技术 , ... -
nginx图片服务器的架构方案
2011-03-01 01:44 1746图片服务 通常数据 容量较大,而且访问也频繁,鉴于此,图片 ... -
解密大中型网站架构设计来自威鹏网信息化解决方案专家。
2011-03-01 01:38 1027相信很多IT ... -
基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
2011-03-01 00:59 1525基于mod_proxy+Apache 2.2.16+Tomca ... -
基于nginx的tomcat负载均衡和集群(超简单)
2011-03-01 00:46 1132今天看到"基于apache ... -
Lighttpd 的安装配置
2011-03-01 00:20 1215lighttpd(http://lighttpd.net/ ...
相关推荐
### Facebook数据仓库揭秘:RCFile高效存储结构 #### RCFile:一种混合型高效存储结构 在大数据处理领域,特别是对于像Facebook这样的大型社交平台来说,数据仓库的设计与优化至关重要。Facebook提出了一种新的...
Facebook移动客户端开发揭秘.doc
本书由Diomidis Spinellis等著,王海鹏等翻译,是一本讲诉架构设计之美的著作,书中介绍了什么是一个好的架构,怎样创建软件架构,什么是伸缩性的架构设计,并通过风靡全球的社交软件Facebook平台的架构距离,具体...
Facebook作为全球最大的社交网络平台,其背后的基础设施规模庞大且复杂。为了高效管理其数据中心的网络流量,Facebook采用了SDN(Software-Defined Networking,软件定义网络)技术。SDN的核心理念是将网络控制层面...
首先,Facebook作为一个全球性的社交媒体平台,其用户基数庞大,覆盖超过150个国家和地区,拥有超过12亿的活跃用户,超越了Google等其他知名网站,成为全球访问量最大的网站。Facebook的用户粘性非常高,每天有超过...
Facebook作为全球最大的社交媒体平台,其广告业务是其主要的收入来源,每年为公司带来数十亿美元的利润。Facebook的广告模式依赖于精准投放,通过收集和分析用户数据,向用户展示与其兴趣、行为和个人特征相关的广告...
Facebook作为全球最大的社交媒体平台,其源码无疑是许多开发者、学习者和技术爱好者关注的焦点。深入研究Facebook源码可以帮助我们理解大型分布式系统的架构设计、前端优化策略以及后端服务的实现原理。本文将从以下...
Facebook是全球最大的社交媒体平台之一,其背后有着复杂的网络架构来支撑数亿用户的日常互动。这份“Facebook的架构”PDF文件详细介绍了这个庞然大物的技术基础。以下是对这份文档内容的概览: Facebook架构的核心...
Facebook自2004年由马克·扎克伯格创立以来,迅速发展成为全球最大的社交平台。至2010年7月,其全球活跃用户已突破5亿,这一成就在当时看来几乎不可思议。Facebook不仅改变了人们的社交方式,更重塑了信息传播的模式...
Facebook全球消费者洞察报告深入分析了当前全球消费者的行为模式、偏好以及社交媒体在其中的作用,并为品牌提供了一系列有效的全球化营销策略。 在全球经济放缓的背景下,传统的外贸增长受限,然而数字营销尤其是跨...
### Facebook的成功秘诀及其本质 #### 引言与背景 自2005年起,随着互联网技术的迅猛发展,社交网络服务(Social Networking ...对于希望借鉴Facebook经验的SNS网站来说,理解其成功背后的多维度因素至关重要。
Facebook作为全球最流行的社交平台之一,拥有庞大的用户基础和流量,其技术架构自然成为了业界关注的焦点。为了维持高效的分享和通信能力,Facebook构建了一个复杂的系统来应对难以想象的访问量和数据规模。2007年11...
标签“facebook”进一步确认了主题,意味着所有内容都与这个全球领先的社交媒体平台直接相关。 压缩包内的文件名称列表提供了具体的学习材料类型: 1. **Facebook API Developers Guide 2008.pdf**:这是一个PDF...
Facebook作为全球最大的社交网络之一,它的每一次更新和变化都会对数亿用户产生影响,因此这些旧版应用的收集具有相当的研究价值。 文件名“SCRiPTSZ!.url”可能是指向一个资源的链接,可能是关于Facebook应用的...
bitlbee-facebook, 用于BitlBee的Facebook协议插件 bitlbee的Facebook协议插件。 这个插件使用基于 Facebook Messenger mqtt的协议。这里项目与 Facebook 。Inc不相关。用法bitlbee wiki中提供了通用用法说明:...
Facebook API和Facebook_JAR包是开发者用来与Facebook平台进行交互的重要工具,它们使得开发者能够创建应用程序,集成到Facebook生态系统中,实现数据交换、用户登录验证、发布内容等功能。Facebook API通常指的是...
本篇文章将深入探讨全球最大的在线社交平台——Facebook的社交图谱结构,并对其关键特征进行详细的分析。 #### 全球结构特征 首先,我们关注的是Facebook社交网络的全局结构特征。研究表明,Facebook社交图谱几乎...
- Facebook 作为全球最大的社交网络之一,为开发者提供了丰富的 API 接口。 - 开发者可以借助这些 API 创建各种社交应用,实现用户互动、数据共享等功能。 2. **平台发展历程**: - 介绍了 Facebook 从创建初期...