Facebook架构

Facebook架构,facebook,design-patterns,architecture,Facebook,Design Patterns,Architecture,我一直在寻找有关Facebook架构、挑战和应对方式的文章/信息。他们使用什么以及为什么使用。它们是如何扩展的,它们所做的设计决定是什么,等等。主要的基础是要学习。了解处理如此巨大流量的网站为架构师等在设计新网站时牢记某些东西提供了很多指导。我正在分享我的发现 我有2个以上的链接,但无法张贴由于在这个网站的限制。此外,如果有人有更好的,请分享(不必只与Facebook相关) p.S.-我无法找到好的地方分享这项研究,因此提出了这项倡议。希望这能帮助到别人。好吧,Faceb

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

  • 我有2个以上的链接,但无法张贴由于在这个网站的限制。此外,如果有人有更好的,请分享(不必只与Facebook相关)


    p.S.-我无法找到好的地方分享这项研究,因此提出了这项倡议。希望这能帮助到别人。

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

    我认为他们袖子里最大的王牌是嘻哈。 您可以自己使用HipHop:

    但如果你问我这是一项非常雄心勃勃而且可能浪费时间的任务。HIPOP只支持这么多,它不能简单地把所有东西转换成C++。那么这告诉我们什么呢?它告诉我们Facebook并没有充分利用PHP语言。它没有使用最新的5.3,我敢打赌还有很多是PHP4兼容的。否则,他们就不能使用嘻哈。HipHop是一个好主意,需要发展和扩展,但在它的当前状态下,它对构建新PHP应用程序的许多人来说并不是真正有用的

    也有PHP到JAVA的转换,比如通过Resin/Quercus。再说一次,它并不支持一切

    另一个要注意的是,如果使用任何非标准PHP模块,那么您就不能将代码转换为C++或java。但是,让我们来看一下PHP模块。它们是用C++编译的。因此,如果您可以构建PHP模块来做一些事情(比如解析XML等),那么您基本上(减去一些交互)以相同的速度工作。当然,你不能只为每一个可能的需要和你的整个应用程序制作一个PHP模块,因为你需要重新编译,而且编写代码要困难得多,等等

    但是,有一些方便的PHP模块可以帮助解决速度问题。 虽然最终,我们有了一个叫做“云”的很棒的东西,通过它,我们可以扩展我们的应用程序(包括PHP),所以它不再那么重要了。硬件越来越便宜了。亚马逊刚刚(再次)降低了价格

    因此,只要你围绕着PHP应用程序需要有一天扩展的想法编写PHP应用程序……那么我认为你很好,我也不确定我是否会看看Facebook和他们做了什么,因为当他们这么做的时候,这是一个完全不同的世界,现在正试图支撑和维护基础设施……嗯,你得到了HipHop这样的东西

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

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

    “了解处理 如此庞大的交通量给我们带来了很多好处 供建筑师等使用的指针 在设计时要记住某些东西 新网站“

    我认为你可以从Facebook的设计中学到很多,就像你可以从任何成功的大型软件系统的设计中学到很多一样。然而,在我看来,在设计新系统时,你不应该记住Facebook的当前设计

    你为什么希望能够处理Facebook必须处理的流量?不管你是一个多么有才华的程序员,很可能你永远都不需要这样做。Facebook本身从一开始就不是为如此大规模的可扩展性而设计的,这也许是从中吸取的最重要的教训

    如果你想了解一个非平凡的软件系统,我可以推荐一本关于SharpDevelopIDE开发的书《剖析C#应用程序》。它已经绝版了,但确实是。这本书让你对一个真实的应用程序有了一个大致的了解,并提供了对程序员有用的IDE的见解。

    Facebook正在使用。脸谱网的后端服务是用各种不同的编程语言编写的,包括C++、java、python和Erlang,它们是根据需求使用的。Facebook使用了一些技术来支持大量的请求,比如

  • -这是一个内存缓存系统,通过在RAM中缓存数据和对象以减少读取时间,用于加速动态数据库驱动的网站(如Facebook)。Memcache是Facebook的主要缓存形式