Facebook产品发布内幕

互联网 程序 PHP
blackhat (19032)发表于 2012年04月09日 14时54分 星期一
来自成功的基础部门
电影《社交网络》让所有人知道了Facebook诞生发展历史,但很少有人知道它内在的引擎是如何运作的。Ars Technica的一篇探讨了Facebook产品发布内幕 Facebook的源代码大部分用PHP开发,PHP便于快捷开发,但性能上弱于其它现代语言。为改进基于PHP的架构的伸缩性,Facebook开发了将PHP代码动态翻译成原生机器码的虚拟机HipHop,平均减少了50%的CPU消耗。由于Facebook的整个代码被编译成单一的二进制可执行文件,因此它的部署流程与常见的PHP环境不同。二进制文件有1.5GB大小,当工程师更新代码生成新的版本,它需要被部署到所有服务器上。向无数服务器迁移1.5GB文件并非易事,在研究了多个方案之后,Facebook决定使用BitTorrent点对点文件共享协议。它创造了一个定制的BitTorrent tracker,允许一台服务器能从同节点的其它服务器上获取文件片段。滚动更新产品耗时30分钟,其中15分钟编译出新的可执行文件,另外15分钟通过BitTorrent部署到大部分服务器。可执行文件只是应用程序栈的一部分,其它资源如JavaScript、CSS和图形库则托管在CDN上。

「星期一」 Hello Monday

Facebook产品发布内幕

电影《社交网络》让所有人知道了Facebook诞生发展历史,但很少有人知道它内在的引擎是如何运作的。Ars Technica的一篇探讨了Facebook产品发布内幕。 Facebook的源代码大部分用PHP开发,PHP便于快捷开发,但性能上弱于其它现代语言。为改进基于PHP的架构的伸缩性,Facebook开发了将PHP代码动态翻译成原生机器码的虚拟机HipHop,平均减少了50%的CPU消耗。由于Facebook的整个代码被编译成单一的二进制可执行文件,因此它的部署流程与常见的PHP环境不同。二进制文件有1.5GB大小,当工程师更新代码生成新的版本,它需要被部署到所有服务器上。向无数服务器迁移1.5GB文件并非易事,在研究了多个方案之后,Facebook决定使用BitTorrent点对点文件共享协议。它创造了一个定制的BitTorrent tracker,允许一台服务器能从同节点的其它服务器上获取文件片段。滚动更新产品耗时30分钟,其中15分钟编译出新的可执行文件,另外15分钟通过BitTorrent部署到大部分服务器。可执行文件只是应用程序栈的一部分,其它资源如JavaScript、CSS和图形库则托管在CDN上。

blackhat 发表于

2012年04月09日 14时54分