小编典典

Facebook架构

all

我一直在寻找有关 Facebook
架构、挑战及其解决方法的文章/信息。他们使用什么以及为什么使用。他们如何扩展以及他们所做的设计决策是什么等。主要的基础是学习。了解处理如此大量流量的网站为建筑师等提供了很多指导,以便在设计新网站时牢记某些东西。


阅读 63

收藏
2022-08-16

共1个答案

小编典典

好吧,Facebook
经历了许多变化,而且它最初的设计并不是为了高效。它旨在完成它的工作。我完全不知道代码是什么样的,你可能找不到太多关于它的信息(出于明显的安全和版权原因),但只需看看
API。看看它多久改变一次,有多少不能正常工作,不再工作,或者根本不能工作。

我认为他们最大的王牌是 Hiphop。
http://developers.facebook.com/blog/post/358
你可以自己使用 HipHop: https ://github.com/facebook/hiphop-
php/wiki

但如果你问我,这是一项非常雄心勃勃且可能浪费时间的任务。Hiphop 只支持这么多,它不能简单地将所有内容都转换为
C++。那么这告诉我们什么呢?好吧,它告诉我们 Facebook 没有充分利用 PHP 语言。它没有使用最新的 5.3,我敢打赌仍然有很多与 PHP 4
兼容。否则,他们无法使用 HipHop。HipHop 是一个好主意,需要发展壮大,但在目前的状态下,它对许多正在构建新 PHP
应用程序的人来说并没有真正的用处。

还有通过 Resin/Quercus 之类的 PHP 到 JAVA。同样,它不支持所有内容…

另一件需要注意的是,如果您使用任何非标准 PHP 模块,您也无法将该代码转换为 C 或 Java。但是…让我们来看看 PHP 模块。它们是用 C
编译的。因此,如果您可以构建 PHP 模块来做一些事情(如解析 XML
等),那么您基本上(减去一些交互)以相同的速度工作。当然,您不能只为所有可能的需求和整个应用程序制作一个 PHP
模块,因为您必须重新编译并且编码会更加困难等。

但是…有一些方便的 PHP
模块可以帮助解决速度问题。尽管在一天结束的时候,我们有这个被称为“云”的了不起的东西,并且有了它,我们可以扩展我们的应用程序(包括
PHP),所以它不再那么重要了。硬件变得越来越便宜。亚马逊刚刚(再次)降低了它的价格。

因此,只要您围绕需要一天规模的想法编写您的 PHP 应用程序......那么我认为您很好,我不确定我什至会查看 Facebook
以及他们做了什么,因为当他们做到了,那是一个完全不同的世界,现在试图支撑和维护基础设施……嗯,你会得到像 HipHop 这样的东西。

现在 HipHop 将如何帮助您?它不会。它不能。您重新开始,您可以使用 PHP 5.3。我强烈建议您研究 PHP 5.3 框架以及 PHP 5.3 与
SPL 库一起带来的所有新优势,并且还要考虑您的数据库。您很可能从数据库中提供内容,因此请查看 MongoDB
和其他类型的无模式和面向文档的数据库。对于最“常见”类型的网站/应用程序,它们更快更好。

看看 Foursquare 和 Smugmug 等新公司以及其他一些正在使用新技术的公司以及他们是如何使用它的。像 Facebook
一样成功,老实说,我不会看他们“如何”建立一个高效的网站/应用程序。我并不是说他们没有非常(非常)有才华的人在那里工作并创造性地解决(他们的)问题……我也不是说
Facebook 总体上不是一个好主意,也不是成功并且你不应该从中获得想法......我只是说如果你可以查看他们的整个源代码,你可能不会从中受益。

2022-08-16