全世界最大的PHP站点 Facebook后台技术探秘

php中文网
发布: 2016-06-13 10:31:13
原创
996人浏览过

世界最大的PHP站点 Facebook后台技术探秘

在今年举行的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.找到。

AI Content Detector
AI Content Detector

Writer推出的AI内容检测工具

AI Content Detector 119
查看详情 AI Content Detector
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号