- 浏览: 44856 次
- 性别:
- 来自: 广州
文章分类
最新评论
在今年举行的Facebook F8开发者大会上,51CTO带您了解了其最新的开放图战略和语义搜索。今天我们一起来了解Facebook背后的软件,看看作为当今世界上访问量最大的网站之一,Facebook是如何保证5亿用户的系统一直稳定可靠的运行。
Facebook的扩展性挑战
在我们讨论细节之前,这里有一些Facebook已经做的软件规模:
◆Facebook有570000000000每月页面浏览量 (据Google Ad Planner)
◆Facebook的照片量比其他所有图片网站加起来还多(包括Flickr等网站)
◆每个月超过30亿张照片被上传
◆Facebook的系统服务每秒处理120万张照片,这不包括CDN服务中处理的照片
◆每月超过25亿条的内容 (状态更新,评论等)被共享
◆Facebook有超过30,000服务器(这个数字是去年的)
Facebook扩展所依赖的软件
Facebook是在某些程度上说仍然是LAMP的站点,但它比普通的LAMP大得多,以纳入其他元素和很多服务,并修改现行的做法。
例如:
◆Facebook仍使用PHP,但它已经为它建立一个编译器,以便它可以分为本地代码打开了Web服务器,从而提高性能。
◆Facebook使用Linux,但他特别为网络吞吐量做了优化。
◆Facebook使用MySQL,但主要是作为一个Key-value的持久性存储,Jions和服务器逻辑操作在Web服务器上操作。因为在那里更容易执行。
还有是自编写的系统,如Haystack,一个高度可扩展的对象存储,用来存储Facebook的照片。还有Scribe,一个日志系统,可以运行在Facebook的巨大规模上的日志系统。
现在我们介绍一下全球最大的社会网络网站的所使用的软件吧。
Memcached
memcached的是现在互联网最有名的软件之一了。 这是一个分布式内存缓存系统,用来作为Web服务器和MySQL服务器之间的缓存层(因为数据库访问比较慢)。 多年以来,Facebook已经提出了一些优化Memcached和一些周边软件的办法。如压缩network stack。
Facebook的每时每刻都有数10TB的数据缓存在Memcached的数千台服务器上。 它可能是世界上最大的Memcached的集群了。
HipHop for PHP
PHP作为一种脚本语言,和本地程序相比是运行缓慢的。 HipHop可以将PHP转换成C++代码,然后再进行编译,可以获得更好的性能。 因为Facebook严重依赖PHP,这使得其可以让Web服务器运行的更有效率。
一个工程师小团队在Facebook(一开始只有三人)花了18个月时间开发HipHop,现在已经是可用状态。
Haystack
Haystack是Facebook的高性能照片存储/检索系统(严格来说,是一个对象存储,因此它并不一定要存储照片)。 它有许多工作要做;有超过20亿张上传的照片,并且每一个被保存在四个不同的分辨率,因此有超过800亿张照片。
它不仅是对能够处理的上亿的照片,运行表现也是至关重要的。 正如我们前面提到的,Facebook的服务约120万张照片每秒 ,这个数字不包括CDN上的。 这是一个惊人的数字。关于Facebook的图片存储请参考51CTO之前的报道《Facebook图片存储架构技术全解析》。
BigPipe
BigPipe是Facebook开发的一个动态的网页服务系统。 Facebook使用它来按section(称为“pagelets”)处理每个网页,以获取最佳性能。
例如,在聊天窗口是分开的,新闻Feed也是分开的,等等。 这些pagelets可以在一个页面表现的时候同时使用,这是该页面表现的时候获取进来的。即使某些工程的一部分关闭或中端,用户也可以获得一部分网页。
Cassandra
Cassandra是一个不会单点失败的分布式存储系统。 这是为NoSQL运动的一个重要组成部分,并已公开的源代码(它甚至成为一个Apache项目)。Facebook在搜索功能中使用它。
除了Facebook,还有一些人也用它,例如Digg的。 不过最近Twitter放弃了Cassandra。关于Cassandra的更多介绍可以参考51CTO的专题《奔向自由?Cassandra数据库应用指南》。
Scribe
Scribe是一个灵活的日志系统,Facebook在他的内部大量使用。 它的能够处理在Facebook的大规模日志记录,并自动处理新的日志记录类别,Facebook有数百个日志类别(categories)。
Hadoop and Hive
Hadoop的是一个开源的map-reduce实现,使得它可以在进行大数据上进行运算。 Facebook的使用这个进行数据分析(而我们都知道,Facebook已经大量的数据)。 Hive就是发源于Facebook,使得对于Hadoop使用的SQL查询成为可能,从而是其更容易对非程序员使用。
Hadoop和Hive是开源的(Apache项目),有为数众多的追随者,例如雅虎和Twitter。
Thrift
Facebook使用的几种不同的语言和不同的services。 PHP是最终用于前端,Erlang是用于聊天,Java和C ++也使用于多种场所,也许还有其他语言。Thrift是一个内部开发的跨语言的框架,联系语言,使他们可以在一起合作,从而使他们之间可以交互。 这使得Facebook可以更容易为继续保持其跨语言的发展。
Facebook已经让Thrift开源。更多的语言支持已被添加到Thrift。
Varnish
Varnish是一个HTTP加速器,可以作为一个负载平衡器,并缓存的内容,然后可以以闪电般的速度送达。
Facebook使用的arnish来处理照片和个人资料图片,处理每天数十亿的要求。 和其他的东西一样,Varnish是开源的。
保持Facebook 顺畅运行的其他东西
我们已经提到的软件,组成了Facebook的系统,并帮助运行在大规模上。 但是,处理这么大的系统是一个复杂的任务,因此我们将列出一些其他的东西,他们保持了Facebook的平稳运行。
渐进发布和暗启动
Facebook有一个他们所谓的守门人制度(Gatekeeper),允许他们可以给不同的用户运行两套不同的系统。 这让Facebook渐进的发布新的功能,A / B测试,只为Facebook雇员发布等的某些特性。
Gatekeeper也可以让Facebook实现“暗启动”,这是在用户使用一些功能之前,就激活某些功能(因为用户没有察觉,所以称之为暗启动)。 这将作为一个现实世界的压力测试,在正式启动前,帮助揭露一些功能障碍和其他问题。 暗启动通常是在正式启动前两个星期。
Profiling的直播系统
Facebook的仔细监控其系统,有趣的是它也负责监察每一个PHP函数在生产环境的性能。 检测各个PHP的环境的配置运行情况。使用开源工具,XHProf 。
渐进的利用关闭功能来提升性能
如果Facebook运行时出现性能问题,有一个办法,就是逐步禁用不太重要的功能,以增强Facebook的大量核心功能表现。
我们没有提及的事情
我们没有提到硬件相关的事情,但这也是提高可伸缩性的重要一环。例如,就像其他大型站点,Facebook利用CDN来处理静态内容。 Facebook还有一个the huge data center,可以帮助他扩展更多的服务。
Facebook的开源情节
不仅是Facebook使用(和帮助),如Linux,Memcached的,MySQL和Hadoop的开源软件,以及许多其他情况下,也贡献许多了其内部开发的软件。
Facebook亦开源了Tornado,一个高性能的网络服务器框架,由FriendFeed团队开发。关于开放源码软件清单,可以在 Facebook’s Open Source page.找到。
发表评论
-
职场观察:高薪需要什么?
2014-04-01 21:07 362http://xjsunjie.blog.51cto.com ... -
毕业五年来的回顾
2014-04-01 20:59 329http://luogangan.blog.51cto.co ... -
深处跳槽热浪中,跳与不跳该如何抉择?
2013-03-20 13:02 646深处跳槽热浪中,跳与不跳该如何抉择? 跳槽有哪些技巧和注意事项 ... -
面试 需要注意三种公司
2013-03-20 12:55 594来源:http://cuisuqiang.iteye.com ... -
面试 需要警惕三个问题
2013-03-20 12:54 554来源:http://cuisuqiang.ite ... -
离职 需要注意三个问题
2013-03-20 12:53 593来源:http://cuisuqiang.ite ... -
最具争议的10个编程观点
2013-02-12 22:21 652你认为最具争议的编程观点是什么?C#专家Jon Skeet曾 ... -
Java枚举的七种常见用法
2013-01-06 12:19 647http://blog.jobbole.com/31597/ ... -
设计高可用和高负载的网站系统
2012-12-10 12:57 564随着网站的运营,用户 ... -
大型互联网网站架构心得
2012-12-10 12:52 630大型互联网网站架构心 ... -
13条职场新人最需要的建议
2012-11-18 18:00 592很多新人刚步入职场,觉得很茫然,带着理想来,带着失望走,磕 ... -
为程序员量身定制的12个目标
2012-11-18 15:44 647http://justjavac.iteye.com/b ... -
FusionCharts:宽高自适应浏览器
2012-10-20 17:36 1831FusionCharts:图形大小随窗口大小改变: 若 ... -
FusionCharts:Div层被Flash遮住
2012-10-20 17:34 643http://www.zihou.me/html/201 ... -
FusionCharts V3图表导出图片和PDF属性说明
2012-10-20 17:29 790http://www.cnblogs.com/ATree/ar ... -
FusionCharts的中文乱码问题
2012-10-20 17:20 674原文地址:http://wangyaobeijing.b ... -
如何提高自己的编程能力
2012-10-14 20:48 6921. 扎实的基础。数据结构、离散数学、编译原理,这些是所有 ... -
12 个有效的提高编程技能的方法
2012-10-14 19:17 529来源于:http://www.oschina.net/news ... -
JAVA MVC框架性能比较
2012-09-09 17:28 743来源:http://www.blogjava.net/p ... -
低级别工具 —— 锁定和原子
2012-09-09 17:26 749Lock Java 语言内置了锁定工具 —— sync ...
相关推荐
Facebook后台模板可能使用这些技术来构建可交互的用户界面。 4. **Bootstrap框架**:为了快速开发响应式页面,开发者可能使用Bootstrap,这是一个流行的前端框架,提供预设的CSS样式和组件,可以简化设计过程。 5....
Facebook PHP SDK 4.0
Facebook是全球最大的社交媒体平台之一,其背后的技术架构是支撑亿级用户流畅互动的关键。Facebook的架构设计涉及到多个层面,包括前端、后端、数据库、分布式系统、缓存策略以及编程语言PHP的应用。以下是对...
Facebook作为全球最流行的社交平台之一,拥有庞大的用户基础和流量,其技术架构自然成为了业界关注的焦点。为了维持高效的分享和通信能力,Facebook构建了一个复杂的系统来应对难以想象的访问量和数据规模。2007年11...
FACEBOOK技术白皮书
本书的核心内容涵盖了后台开发中的关键技术和实际操作方法,得到了业界多位专家,包括来自腾讯、阿里、百度、Facebook等知名公司的专家的高度推荐。 在后台开发领域,首先我们需要理解的是基础架构。后台开发通常...
facebook数据表结构一览图
在本文中,我们将深入探讨如何在 Laravel 框架中集成并使用 Facebook PHP SDK,以实现与 Facebook API 的无缝对接。Laravel 是一个基于 PHP 的流行开源 Web 应用框架,以其优雅的语法和强大的功能深受开发者喜爱。...
Facebook API Connect 涉及到的技术点包括OAuth 2.0授权框架,它是Facebook登录的基础,允许用户授权第三方应用访问他们的Facebook数据。此外,还会涉及到 Graph API,这是Facebook提供的一种RESTful接口,用于获取...
在本文中,我们将深入探讨如何在 Laravel 框架中集成 Facebook 的 PHP SDK,并利用它来实现各种功能,如用户登录、数据获取等。Laravel 是一个流行的 PHP 框架,以其优雅的语法和强大的功能深受开发者喜爱。Facebook...
因为后台开发所需要的技术广泛而坚深,要成为一名后台开发工程师门槛很高,所以相关人才比较紧缺。作者是在腾讯工作多年的后台开发工程师,不仅技术精湛,而且在处理大量实际业务的过程中积累了丰富的开发经验。在这...
因为后台开发所需要的技术广泛而坚深,要成为一名后台开发工程师门槛很高,所以相关人才比较紧缺。作者是在腾讯工作多年的后台开发工程师,不仅技术精湛,而且在处理大量实际业务的过程中积累了丰富的开发经验。在这...
Facebook插件开发的优势在于可以将插件集成到Facebook站点中,提供更多的功能和服务,提高用户体验和增加用户粘性。此外,Facebook插件开发也可以为开发者带来巨大的利益。 三、Facebook插件开发的流程 1. 注册...
后台开发:核心技术与应用实践 作者:徐晓鑫 著 出版日期:2016年08月06日 封面宣传语:腾讯云平台技术总监黄世飞、Facebook对外支付项目主程张子兴、微软软件工程师彭可竞、阿里巴巴资深算法工程师周乐、百度...
HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。...
腾讯公司资深研发工程师多年后台开发经验总结,藐腾讯、Facebook 、微软、阿里、百应多位资深技术专.高摩认可。 完整勾勒后台开发技术能力体系,多维度讲解了成为一名后台开发工程师所需掌握的核心技术、开发工具和...
Facebook作为全球最大的社交媒体平台之一,其在云计算领域的实践与探索具有深远的影响。这篇论文聚焦于Facebook如何利用云计算技术来支持其庞大的用户基础、处理海量数据以及优化服务性能。 首先,论文可能会探讨...
Facebook基础培训旨在帮助新员工了解并掌握Facebook这一全球最大的社交媒体平台的基本知识和广告投放操作。本次培训由Tracy主讲,内容涵盖了Facebook的基础概念、专页管理、广告系统以及技术与开发者账号的相关知识...
Facebook PHP/JS 类库是开发人员用来与Facebook平台进行交互的重要工具,它们简化了与Facebook API的集成过程,使得开发者可以轻松地实现社交功能,如登录验证、分享、获取用户信息等。在本概述中,我们将深入探讨...
首先,我们需要从Facebook API或者通过爬虫技术获取用户的签到数据。这些数据通常包括用户ID、签到时间、签到地点(地理坐标或地点名称)等信息。在预处理阶段,我们需要清洗数据,去除异常值,处理缺失值,并将地理...