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

news/2024/5/9 9:41:30/文章来源:https://blog.csdn.net/weixin_30641999/article/details/99365632

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

2010年6月,Google公布全球Top 1000网站。Facebook独占鳌头。

d55098b6-32f9-39c6-921e-ee838a910df0.png

 

以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  392adbec-35d9-3454-817e-dd2e4286e13b.png
 

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

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

   HipHop for PHP  d040485c-4fe5-31a6-a717-fff07afc84a6.png
 

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

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

   Haystack  e4de0499-ed77-374a-b103-0437781b39a3.jpg
 

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

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

   BigPipe  3a895df7-b738-30d3-8a15-5c4b7ac8220f.jpg
 

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

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

   Cassandra  2d78cb30-c9d4-3783-af8e-538ce9442cf9.png
 

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

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

   Scribe  b0e0e5b3-e604-37e1-9ecd-eb41a26a84dc.png
 

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

   Hadoop and Hive9d008846-7a72-32f2-ab7b-d90bc2dc5535.png
 

   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  f3487ae6-f9ab-38cd-9392-0f09f02c29ef.png
 

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

转载于:https://www.cnblogs.com/bettermanlu/archive/2011/01/27/1946524.html

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

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

相关文章

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

政府门户网站的工作量统计和访问统计功能设计分析

1.概述 1.1. 政府门户网站概述 政府门户网站是政府对外发布信息、提供在线办事服务及便民查询服务的窗口,是电子政务的核心组成部分。近年来,政府十分重视政府门户网站的建设,据统计,90%以上的政府部门都建成了门户网站&#xff0…

25佳漂亮的网站底部设计案例欣赏

您可能还喜欢 寻找网页设计灵感的27个最佳网站推荐最新30个漂亮的个人作品集网页设计案例分享35个非常漂亮的单页网站设计案例60佳灵感来自大自然的网页设计作品欣赏分享100佳精美的作品集网站设计案例相对于网站头部来说,关注网站底部设计的人很少。我们平常也能碰…

ruby on rails网站快速上手之环境搭建

近期转到一个新项目组需要用ruby on rails开发网站,于是学习了下相关知识。记录如下,以便将来查看。 1、环境搭建: ruby的环境搭建很简单,可以只安装ruby。由于目的是使用ROR开发网站,所以我之间下载了InstantRails-2.…

学习制作手机网站1

学习制作手机网页 流式布局&#xff1a; 盒子的padding 和margin width都要使使用 百分比来定义 百分比 如果一个盒子没有父元素&#xff0c;那么它的宽度默认就是相对于浏览器的宽度 1 <html lang"en">2 <head>3 <meta charset"UTF-8"…

vue SEO的解决方案

介绍 什么是 SEO SEO&#xff08;Search Engine Optimization&#xff09;搜索引擎优化&#xff0c;是指通过对网站进行站内优化和修复&#xff08;网站Web结构调整、网站内容建设、网站代码优化和编码等&#xff09;和站外优化&#xff0c;从而提高网站的关键词排名以及公司…

C#各种获取IP以及网站MAC什么的

客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables.Get("Remote_Host").ToString();客户端浏览器IE&#xff1a;Request.Browser.Browser;客户端浏览器 版本号&#xff1a;Request.Browser.MajorVers…

什么是网站CDN服务,CDN加速原理?

转载&#xff1a;http://server.zzidc.com/fwqcjwt/728.html 摘要&#xff1a;在为您的网站打开速度发愁吗&#xff1f;您有没有发现有些大网站每天拥有几十万或者上百万&#xff0c;甚至几亿用户的访问&#xff0c;而且不同用户分布在全国各地的各个运营商的网络里面&#xff…

个人网站音乐服务器,自己的私人音乐流媒体服务,这才是多少音乐者的梦寐以求的...

自己的私人音乐流媒体服务&#xff0c;这才是多少音乐者的梦寐以求的今天音乐的一个棘手问题是——它分散了。除了音乐流媒体服务之外&#xff0c;您可能还有CD&#xff0c;MP3文件甚至其他数字下载。如果你想把你所有的音乐放在一个地方&#xff0c;你必须支付流媒体服务的费用…

织梦同步静态文件到服务器,静态网站添加到织梦

静态网站添加到织梦 内容精选换一换表1列出了虚拟私有云VPC的常用功能。在使用虚拟私有云VPC之前&#xff0c;建议您先通过基本概念介绍了解子网、路由表、安全组、弹性公网IP等基本概念&#xff0c;以便更好地理解虚拟私有云VPC提供的功能。当AppCube平台提供的全局高级组件无…

网站部署笔记

今天部署asp.net网站的时候遇到了两个问题 &#xff1a; 一、网站部署完毕后出现了404的问题 查资料发现还是少配置 在web.config中的configuration配置节点下加入如下配置节点即可 <system.webServer>   <defaultDocument>     <files>       &…

分享织梦DedeCMS设置全站Html网站地图教程

全站Html网站地图的作用就是方便搜索蜘蛛爬行&#xff0c;收录网站&#xff0c;增加用户体验。 详细的功能说明请看《什么是网站地图》一文。 下面织梦设置全站地图的步骤&#xff1a; 第一步&#xff0c;登陆DedeCMS后台&#xff1a;核心 - 频道模型- 自由列表管理&#xff0c…

使用ThinkPHP框架快速开发网站(多图)

使用ThinkPHP框架快速搭建网站这一周一直忙于做实验室的网站&#xff0c;基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方面新手的你有一丝丝帮助&#xff0c;那就更好了挖。 以前用PHP做过一个很蹩脚的网站&#xff0c…

网站盈利模式其实只有三种

在做网站大家都会考虑关于盈利模式的问题&#xff0c;如果没有清楚的盈利模式&#xff0c;很多人都不会大力去投资做这个网站&#xff0c;而盈利模式往往是目前来讲一直没有创新的地方&#xff0c;因为盈利模式只有以下三种。 为了不让大家认为我在说这三种盈利模式是吹牛逼的&…

如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备

本系列所有文章 如何一步一步用DDD设计一个电商网站&#xff08;一&#xff09;—— 先理解核心概念 如何一步一步用DDD设计一个电商网站&#xff08;二&#xff09;—— 项目架构 如何一步一步用DDD设计一个电商网站&#xff08;三&#xff09;—— 初涉核心域 如何一步一步用…

新网站如何做SEO优化

&ldquo;百度快照变慢了、百度收录问题、关键词掉了&rdquo;&#xff0c;这是在卢松松留言本被经常问及的问题&#xff0c;新手站长往往会因此吃不下饭、睡不着觉&#xff0c;网站的推广是一个漫长的过程&#xff0c;&ldquo;心急吃不了热豆腐&rdquo;&#xff0c;…

《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (1):大型网站发展历程...

网站架构发展 1 初始阶段 -- 只有一台服务器 2 应用服务和数据服务分离 3 使用缓存改善网站性能 4 使用应用服务器集群改善网站并发处理能力 5 数据库读写分离 6 使用反向代理和CDN加速网站响应 反向代理和CDN的基本原理都是缓存&#xff0c;区别在于CDN部署在网络提供商的机房…

如何给WordPress网站更换域名

网站更换域名是站长们经常遇到的网站处理问题&#xff0c;wordpress程序网站换域名主要包括如下几步&#xff0c;希望大家能够认真参考实践。 第一步&#xff1a;将自己的新域名DNS解析到自己的服务器或是空间ip上&#xff0c;ip绑定新域名。 第二步&#xff1a;进入你的网站数…

mouseover和mouseenter的区别

_谦龙 发布在谦龙的小天地2017年6月5日view&#xff1a;111HTML5BrettBat性能优化正则表达式前端工程师面试闭包高阶函数DOMES6在文章任何区域双击击即可给文章添加【评注】&#xff01;浮到评注点上可以查看详情。 隐藏标注前言 原文地址 项目地址 不知道大家在面试或者工作过…

百度云主机使用WordPress建站ideashare.club过程总结与那些坑

目录 为什么建站&#xff1f; 购买主机 配置主机 购买域名 ICP备案 解析域名 WordPress安装 申请SSL证书 踩过的那些坑&#xff1a; 1&#xff0c;域名解析的设置 2&#xff0c;隐私保护开关操作失败 3&#xff0c;开启了SSL证书以及wordpress的HTTPS插件&#xff…