揭秘全球最大网站Facebook背后应用的软件

news/2024/5/20 11:09:29/文章来源:https://dengbin.blog.csdn.net/article/details/6842198

2010年6月,Google公布全球Top 1000网站。Facebook独占鳌头。
揭秘全球最大网站: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

Memcached是一款相当有名的软件。它是分布式内存缓存系统。Facebook(还有大量的网站)用它作为Web服务器和MySQL服务器之间的缓存层。经过多年,Facebook已在Memcached和其相关软件(比如,网络栈)上做了大量优化工作。

Facebook运行着成千上万的Memcached服务器,借以及时处理TB级的缓存数据。可以这样说,Facebook拥有全球最大的Memcached设备。

HipHop for PHP HipHop for PHP

和运行在本地服务器上代码相比,PHP的运行速度相对较慢。HipHop把PHP代码转换成C++代码,提高编译时的性能。因为Facebook很依赖PHP来处理信息,有了HipHop,Facebook在Web服务器方面更是如虎添翼。

HipHop诞生过程:在Facebook,一小组工程师(最初是3位)用了18个月研发而成。

Haystack Haystack

Haystack是Facebook高性能的图片存储/检索系统。(严格来说,Haystack是一对象存储,所以它不一定要存储图 片。)Haystack的工作量超大。Facebook上有超过2百亿张图片,每张图片以四种不同分辨率保存,所以,Facebook有超过8百亿张图 片。

Haystack的作用不单是处理大量的图片,它的性能才是亮点。我们在前面已提到,Facebook每秒大概处理120万张图片,这个数据并不包括其CDN处理的图片数。这可是个惊人的数据!!!

BigPipe bigpipe

BigPipe是Facebook开发的动态网页处理系统。为了达到最优,Facebook用它来处理每个网页的分块(也称“Pagelets”)。

比如,聊天窗口是独立检索的,新闻源也是独立检索的。这些Pagelets是可以并发检索,性能也随之提高。如此,即使网站的某部分停用或崩溃后,用户依然可以使用。

Cassandra Cassandra

Cassandra是一个没有单点故障的分布式存储系统。它是前NoSQL运动的成员之一,现已开源(已加入Apache工程)。Facebook用它来做邮箱搜索。

除了Facebook之外,Cassandra也适用于很多其他服务,比如Digg。

Scribe Scribe

Scribe是个灵活多变的日志系统,Facebook把它用于多种内部用途。Scribe用途:处理Facebook级别日志,一旦有新的日志分类生成,Scribe将自动处理。(Facebook有上百个日志分类)。

Hadoop and HiveHadoop

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

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的工程师们奔向下一个“山头”。我们相信他们不会辜负众望。毕竟,他们正跨越山头,那个我们大多数人仅能向往的山头;他们正扩展网站,那个用户来自全球各地的网站。当你实现那个里程碑时,你将彪炳史册。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_782225.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可扩展、高可用、负载均衡网站架构设计方案

基本需求: 1、 高可用性:将停止服务时间降低到最低甚至是不间断服务 2、 可扩展性:随着访问的增加,系统具备良好的伸缩能力 3、 可视性:系统、服务的状态处于一个实时的监控之下 4、 高性能高可靠性:经过优化的体…

(推荐)高并发高流量网站架构详解

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新 生的网站…

调查发现女人比男人更喜欢使用社交网站(组图)

男人更喜欢语音/电话交流 女人比男人更喜欢使用社交网站北京时间 9 月 25 日上午消息,根据市场研究机构 Rebtel 发布的最新调查结果,女人更喜欢通过社交网站与家人、朋友及同事联系,而男人更喜欢用电话与家人、朋友及同事联系。Rebtel 在今年…

FileRide——与众不同的社交网站

FileRide是一个很别致的社交网站,总部位于斯德哥尔摩:该网站围绕你电脑上的文件,为你打造一个社交网络。比如说,可以让你知道在该网站上,哪个用户的电脑上有你喜欢的音乐和图片,你可以把它们加为好友。你还…

大中型网站网站(B/S开发中) cache应用(多图)

关于中大型开发b/s开发中的缓存(cache),我的一些看法,有不正确的或者是有笔误的地方,请指正。thanks首先,应该了解基本的,对于缓存的知识:Q:如:静态缓存和动态缓存的区别&#xff1f…

20个仿Quora的免费问答网站程序

接触网站制作和运营将近9年了,还从没想过搭建问答社区,其实这倒是个还不赖的主意,不过被人抢先了,这是一个免费问答网站搭建平台的程序名单,通过这些程序,你可以搭建像Quora, StackOverflow, Yahoo Answers…

谈谈运行稳定性好效率高的千万级大型网站系统架构性分析

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理:负载量不大的情况下select、…

代码原理 webkit WebKit-利用百度siteapp开发网站App-(IOS和Android版本)

使用百度siteapp开发网站的App-(IOS和Android版本) 介绍 之前写了个把百度云作文网站文件服务器、一些园友的评论不错、不过我似乎把意思弄错了! 我用的百度云的SVN环境! 现在不少人都做web开发。不管你是什么语言编写的(jsp,php…

Ruby On Rails 网站开发感悟

独自一人花费了将近三个月的时间来做一个音乐网站(http://www.likenote.com ), 这对任何一个有过几年Web开发经验的人来说都不是件什么太难的事。虽然我也做了 4 年J2EE开发,但还是头一次使用全新技术来制作一个网站,这其中的辛苦…

RHEL4- WEB服务(七)配置基于端口web虚拟网站

RHEL4- WEB服务(七)配置基于端口web虚拟网站前面讲述了《RHEL4- WEB服务(五)建立基于ip的多个虚拟web网站》和《RHEL4- WEB服务(六)建立基于主机名的多个虚拟web网站》,这一篇讲述一个比较特殊的…

高并发高流量网站架构

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有…

公司网站Silverlight版^_^

公司网站Silverlight版^_^ 网站地址:http://www.ichinagames.com/Silverlight/ 预览图: posted on 2010-01-16 13:47 nowpaper 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/nowpaper/archive/2010/01/16/1649131.html

pinterest视觉社交网站商业模式和崛起原因

Pinterest是一个号称"个人版猎酷工具"的美国视觉社交网站,网站创办于2011年,目前 网站用户增长速度赶上了五年前的Facebook,是继facebook、twitter、tumblr之后,又一个受世界瞩目的网站。 Pinterest名称由Pin&#xff0…

30个优秀的网站导航菜单设计案例

导航是网站最重要的组成部分之一,一个有吸引力的导航能够引导用户浏览网站中的更多内容。导航需要和网页内容完美的融合在一起,因此设计前需要设仔细分析网页结构。这篇文章收集了30个优秀的网站导航设计案例,希望这些实例能给你带来灵感。 J…

学用MVC4做网站三:3.3更新栏目

序 一、用户 二、用户组 三、栏目 3.1添加栏目 3.2浏览栏目 3.3更新栏目 上次在树形列表里面点击栏目名称后跳转到详细信息页面~/Category/ManageDetails/id。在详细页面里点修改,来完成栏目资料修改。 先打开【CategoryController】添加[ManageDetails(int id)]act…

LAMP网站架构方案分析【精辟】

LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件&…

30个带给你灵感的 iPhone 应用程序网站设计

这篇文章向大家分享30个漂亮的 iPhone 应用程序网站设计作品,希望这些实例能带给你灵感,一起欣赏。 Routes Camera Decrescendo Interface Diet2Go Task This Grades Headquarters bowtie Here, File File! 2Do Lite Weight My Desk Borange TimeTurner…

Linux系统用脚本轻松搭建Apache网站服务器

您能学到什么? 明白Apache适用于哪种场景下; 源码编译安装的方式构建httpd服务器的两种方法, 一种常规安装,另一种脚本快速安装 Apache简介 编译安装httpd服务器步骤 构建httpd服务器实验

Linux系统搭建Web网站服务器之访问控制与虚拟web主机

httpd服务访问控制概述 作用 控制对网站资源的访问为特定的网站目录添加访问授权控制方式 客户机地址限制用户授权限制实验案例 要求: 1、www.bdqn1.com增加用户验证,网页目录为/bdqn/个人名 2、www.bdqn2.com 只允许192.168.10.0/24网段访问,网页目录为/个人名 提示:分…

社交网站的数据挖掘与分析

关于本书:【互动网】【卓越网】【当当网】【京东网】【豆瓣网】 《社交网站的数据挖掘与分析》前言(原书名:Mining the Social Web,2011年Jolt生产效率大奖获奖图书)与其说网络是一项技术创新,不如说它是一…