Facebook如何运作?细节[技术说明]

Facebook 社交网络。人们之间已经互相“贴脸"了大约6年,使Facebook成为最常用的社交网络,在全球拥有超过3.5亿用户。但是Facebook如何工作?

在本文中,我将讨论Facebook的内部工作原理,涵盖其体系结构和前端/后端基础结构",即将Facebook固定在一起的基本要素。

Facebook如何工作?""前端

Facebook使用各种服务,工具和编程语言来构成其核心基础结构。在前端,它们的服务器运行带有Memcache的LAMP(Linux,Apache,MySQL和PHP)堆栈。不是计算机科学专家?让我们来看看这到底是什么意思。

这部分内容很不言自明。 Linux是类Unix的计算机操作系统内核。它是开源的,可自定义,并且安全性高。 Facebook在Apache HTTP Server上运行Linux操作系统。 Apache也是免费的,并且是使用最广泛的开源Web服务器。

对于数据库,Facebook凭借其速度和可靠性而使用MySQL。 MySQL主要用作键值存储,因为数据在大量逻辑实例之间随机分布。这些逻辑实例分布在物理节点上,并在物理节点级别完成负载平衡。

就自定义而言,Facebook开发了自定义分区方案,其中全局ID分配给所有用户。数据。他们还具有基于每个用户的频繁程度和最新数据的自定义归档方案。大多数数据都是随机分布的。

Facebook使用PHP是因为它是一种优秀的Web编程语言,具有广泛的支持和活跃的开发人员社区,并且对于快速迭代很有用。 PHP是一种动态键入/解释的脚本语言。

Memcache是​​一种内存缓存系统,用于通过在RAM中缓存数据和对象来加快动态数据库驱动的网站(如Facebook)的速度,以减少读取时间。 Memcache是​​Facebook的主要缓存形式,有助于减轻数据库负载。

拥有缓存系统可使Facebook像调用数据一样快。如果不必进入数据库,它只会根据您的用户ID从缓存中获取数据。

Facebook已经意识到使用LAMP堆栈存在弊端。值得注意的是,PHP不一定针对大型网站进行了优化,因此很难扩展。而且,它不是执行速度最快的语言,并且扩展框架很难使用。

Facebook工程副总裁Mike Schroepfer最近在EmTech @ MIT上接受了采访。 Schroepfer说:“扩展任何网站都是一个挑战,但是扩展社交网络具有独特的挑战。"

他接着说,与其他网站不同,您不能仅仅添加更多服务器来解决这个问题是由于Facebook的“巨大的互连数据集"造成的。由于用户的活动,新的连接一直在建立。

Facebook的增长如此之快,以至于经常面临有关数据库查询,缓存和存储的问题数据的。他们的数据库很大,而且非常复杂。为此,Facebook已经启动了许多开源项目和后端服务。

Facebook如何工作?""后端

Facebook的后端后端服务以多种不同的编程语言编写,包括C ++,Java,Python和Erlang。他们创建服务的理念如下:

1。 如有需要

2创建服务。创建框架/工具集以便更轻松地创建服务

3。为任务使用正确的编程语言

可以在此处找到所有Facebook开源开发的列表。我将讨论Facebook开发的一些基本工具。

Scribe是一个服务器,用于聚合从许多其他服务器实时流式传输的日志数据。它是可伸缩的框架,可用于记录大量数据。它是在Thrift的基础上构建的。

Cassandra是一个数据库管理系统,旨在处理分散在许多服务器上的大量数据。它支持Facebook的“收件箱搜索"功能,并提供最终一致性的结构化键值存储。

HipHop for PHP是PHP脚本代码的源代码转换器,其创建目的是节省服务器资源。 HipHop将PHP源代码转换为优化的C ++。完成此操作后,它将使用g ++将其编译为机器代码。

结论

简而言之,那就是Facebook。如果我要更详细些,可以轻松将本文增加37页,但是要回答“ Facebook如何工作?"这个问题,我认为就足够了。如果您不了解所有功能和创新,那么Facebook背后的主要思想实际上就是非常基本的“保持人们之间的联系"。 Facebook意识到社交网络的力量,并不断创新以保持其服务在企业中的最佳地位。

标签: