揭秘全球最大网站Facebook背后的那些软件

news/2024/5/9 16:30:06/文章来源:https://xymyeah.blog.csdn.net/article/details/5746049

揭秘全球最大网站Facebook背后的那些软件

来源:http://www.javaeye.com/news/16925

 

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

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

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

相关文章

知了CMS开发说明文档(ibeetl) 建站系统文档

目录 知了CMS开发说明文档 一、项目介绍 二、项目结构 三、项目基础 3.1、前台入口控制器类: 3.2、后台入口控制器类: 3.3、项目配置文件 3.4、项目启动与打包 四、相关技术 五、模板标签 5.1、栏目列表标签 5.2、栏目标签 5.3、内容列表标签 5.4、内容列…

网站性能优化:base64:URL传输图片文件

一、base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么? 好吧…

在网站中使用VideoJs视频播放器播放视频

之前使用videojs用来网页中播放视频,现在做一下总结 (这里把插件下载及演示地址、使用方法及demo放出来) 视频播放插件Video.js 插件下载地址: http://www.jq22.com/jquery-info404 演示播放视频地址:http://www.jq…

如何注册网站域名?申请域名详细教程

要搭建网站我们就必须要有域名,有了域名别人才可以访问你的网站。域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。通俗点就是我们经常说到的网址,不过这种说法…

如何申请阿里云免费SSL证书(可用于https网站)并下载下来

前提条件:你要有阿里云的账号,并且要有一个域名。 注意:阿里云系统也在不断更新,界面以后可能会有稍许变化,但是原理是相通的。 具体步骤: 1.登录到阿里云后台,并选择 “SSL证书(应…

【JavaWeb】利用开放平台建设网站生态圈

在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做Open API,提供开放API的平台本身就被称为开放平台。通过开放平台,网站不仅能提供对Web网页的简单访问&#…

此网站无法提供安全连接(客户端和服务器不支持一般 SSL 协议版本或加密套件。)

最近访问一部分网站时,出现如下图所示 “ 此网站无法提供案例连接,客户端和服务器不支持一般 SSL 协议版本或加密套件 ” 的问 题。 注意这里显示了非常关键的一句话,xxx使用了不受支持的协议。从这句话入手,很快就查到了原因。原…

网站 smtp服务器,网站smtp服务器

网站smtp服务器 内容精选换一换如果您需要使用创建的云服务器搭建一个对外展示的网站或者Web应用程序,请按以下步骤进行相关的配置操作。建站参考如果您使用的是公共镜像创建的云服务器,那么购买完成后可以参考以下建站指导完成完网站或应用程序的搭建。…

记一次前后端分离网站部署全流程(mysql安装,jdk配置,redis安装配置,elasticSearch配置等..)

阿里云服务器配置 配置ssh秘钥对 到ECS控制台的网络与安全创建秘钥对,并且绑定到你的服务器实例上。 配置实例密码 将之前创建的ssh秘钥对下载至本地,使用xshell连接 配置JDK 使用xftp 将jdk上传至服务器后解压 tar -zxvf jdk-8u201-linux-x64.tar…

添加域名不生效_网站建设:如何给域名做解析

网站制作一年350元,五站合一,快速建站 ,www.sxjcwzjs.com,只需进入网站右上角注册快速建站即可(需要电脑登录注册),需要联系我吧!电话:13752214574,微信号:m1078582894域名买好了&am…

腾讯cdn设置 php,教你利用腾讯云 cdn 加速网站静态资源

今天在给 onepoint 更换 js 库的 cdn 时突然想起来,腾讯云每个月还送我 10g 的 cdn 流量包。博客里面有时候会包含很多图片,正好可以把这闲置的资源用上了。平台信息bt(宝塔)、apache2、typecho类型选择cdn 可以选择全站加速,也可以选择只对指…

网络拓扑图画图工具_给你5分钟白漂:这些都是我的常用在线工具和网站

小伙伴们大家好,本期再托一次家底,和大家分享十几个自己日常工作学习过程中的常用在线工具和网站,希望能有帮助。也欢迎小伙伴们分享和安利出你们觉得有用的工具,不要停啊。注:本文 Github开源项目:github.…

网页模板快速建站工具_10款精品Windows工具,值得推荐

接着再来更新10款实用的电脑工具,希望对大家有所帮助!以下工具百度搜索名称即可获取下载工具-Aria2Aria2是一个轻量级多协议多平台的开源下载工具。它支持HTTP,HTTPS,FTP,BT 等多种格式下载。它虽然是命令行工具&#…

url获取网站信息不包含网页源文件内的标签_站内SEO:影响优化效果的7个站内因素...

站内SEO是SEO优化的一个极其关键的方面,我们并不是说它比站外SEO更重要,但是您可以完全控制它,因此可以更好地利用它。为了快速回顾,页面上的SEO处理您的网页或网站上的内容,它包括内容,关键词,…

hbuilderx制作简单网页_推荐一款可以把网页打包app的网站和软件(第1期)

可以把网页打包app的软件和网站有很多,今天要推荐的是国产的一款轻巧、极速 10M的绿色发行包。 C架构,启动速度、大文档打开速度、编码提示,都极速响应。强大的语法提示 一流的ast语法分析能力,语法提示精准、全面、细致&#xff…

github怎么用_只需10分钟,构建你的 GitHub 个人网站

很多开发者尤其是前端开发者都希望有一个自己的网站来展示个人信息、简历或者写一些博客。也许你会想到自己买云服务器,然后将开发的网站放上去,但是服务器价格不菲而且对于初学者来说自己部署也比较麻烦。其实想搭建个人网站有 GitHub 就足够了。今天我…

百度 热搜词页面的 js是怎么做的_来宾快手广告渠道,网站关键词优化,热推

首页 > 新闻列表 > 正文作者:佚名 点击数: 6更新时间:2020-11-07 12:19:33 导读:一帆创众网络为您提供来宾快手广告渠道,网站关键词优化的相关知识与详情: 网站作品关键词传播的独创性是搜索引擎基本重要的要求…

服务器被入侵网页后门,谨防“网页后门”,浅谈Webshell入侵网站的原理和预防措施...

正在看手机、电脑或电视的你,是否发现了一个问题,人们对于互联网的依赖程度,让网络几乎已经成了生活中必不可少的东西,不管是生活中还是工作中,它都起着重要的作用,但同样它在给人们带来好作用的同时&#…

css设置logo图片大小,修改ecshop网站logo图片尺寸大小

ecshop里面把logo的尺寸是写固定了的,大概在150*35的样子,如果设计的尺寸偏大,那么就会出现只能显示部分logo的情况,请的合作美工出于漂亮和完整传达意思的考虑,他把我的logo尺寸修改为150*52,这样的话logo…

解决wp的插件all-in-one-seo-pack被百度收录失败的问题

用过wordpress的都应该知道all-in-one-seo-pack插件的强大性,这是一个对网站SEO影响很大的插件,然而,再强大的插件也是有一些不足的地方。这几天我们公司的网站很多页面都没有被百度收录进去,明明已经SEO过了却还是不行&#xff0…