HipHop-Facebook性能提升的秘密武器
2010-02-16 18:22:38   来源:未知   评论:0 点击:

HipHop for PHP这个Facebook神秘的PHP项目终于揭开面纱。这个项目由一个PHP到C++的转换程序,一个重新实现的PHP运行库,和许多常用PHP扩展的重写版本构成,目的是旨在加速和优化PHP。 用Fa

        HipHop for PHP这个Facebook的PHP项目终于揭开神秘面纱。这个项目是由一个PHP到C++的转换程序,一个重新实现的PHP运行库,和许多常用PHP扩展的重写版本构成,目的是为了加速和优化我们的PHP。Facebook项目负责人赵海平说:HipHop项目对Facebook影响巨大。目前Facebook 有90%的Web流量都是由它支撑。由于用了HipHop,Facebook Web服务器上的平均减少了50%的CPU使用率,从而大大增加了服务器的性能需求。为了让这个改进惠及开源社区,他们决定将它开源,希望能够帮助进一步提高更多大型复杂PHP网站的性能。

  关于PHP和Facebook

  应该很多人都知道,Facebook的前端主要是用PHP写的。Facebook项目负责人赵海平说,过去六年Facebook从PHP语言的进展上有很多收获。PHP非常简单,易学易用,好读好调试,所以新工程师成长都很快,这样很有利地促进了Facebook的更快的创新。

  PHP是一种脚本语言,其特点是编程效率高,能够支持产品的快速迭代。但是与传统的编译语言相比,毕竟脚本语言的CPU和内存使用效率不好。随着Ajax技术的广泛采用,加上SNS对动态要求较高,这些缺点更显得突出。对于每月超过4000亿次PV的Facebook来说,如何实现扩展?变成他们极具挑战性的问题了。

  在这个问题下,一般来说是直接用C++重写PHP应用中比较复杂的部分,作为PHP扩展。这时候,PHP就转变为一种胶水语言,连接前端HTML和C++应用逻辑。从技术角度讲这也没有问题,但是这样做增加了技能需求,能够在整个应用上工作的工程师数量就大大减少了。学习C++只是编写PHP扩展的第一步,接下来还要理解Zend API。由于Facebook的工程团队较小,用户量又大,基本上每个工程师要支持100万以上的用户。有些代码不是团队里每个人都能看懂,所以这种C++重写PHP应用中比较复杂的部分,作为PHP扩展这种做法对于Facebook来说是无法接受的。

  Facebook网站本身的性能扩展就是极具挑战性的,因为几乎每次页面浏览都是有个性化体验的登录用户发起。浏览主页时,系统需要查询所有朋友、朋友最重要的状态更新、 根据隐私设置筛选结果,然后还要显示评论、照片等等动态,这一切都需要在一秒内完成。

  自2007年以来,Facebook曾写过几种不同办法解决这些问题。其中包括用另一种语言重写Facebook,但是由于开发的复杂性和速度等原因,未能实现。他们还重写了PHP的核心部分Zend引擎,并提交给了PHP项目,但最终还是没有获得所需的性能。最后,他们选择了HipHop,终于得偿所愿。

  有了HipHop,工程师可以编写代码,用PHP编写组合最后页面的逻辑,并能够继续快速迭代,同时后端服务使用C++, Erlang, Java, Python编写,提供新闻提要、搜索、聊天和其他核心功能。

  HipHop开发故事

  赵海平透露,项目最初是来自几年前Facebook公司一次Hackathon活动(这个活动是员工在一个晚上自由发挥,实验新的想法),他手工将PHP转换为C++代码,虽然语法上很类似,但是无论是CPU还是内存使用,转换后的C++代码都大大优于PHP。于是他想,如果构建一个系统,编程实现转换,会怎么样呢?

  在此之前,已经有了不少改善PHP性能的方法,比如:Zend引擎在运行时转换PHP源代码为运行在Zend虚拟机上的opcode。开源项目APC和eAccelerator将输出缓存,为大多数PHP网站所使用。此外,还有Zend Server这样的商业产品,通过opcode优化和缓存,提高PHP速度。然而赵海平选择了另一条道路,将PHP直接转为C++,然后再变成本地机器码。当然,有许多开源项目也是同样的思路,Roadsend和phc编译为C,Quercus编译为Java,而Phalanger编译为.NET。

  Hackathon之后8个月,赵海平拿出了原型,足以说明这条路可以走通,编译后的代码的确更快。不久,Iain Proctor和Minghui Yang加入进来。接下来又开发了10个月,在生产服务器上测试了6个月。然后正式上线部署,6个月之后,Facebook 90%以上的Web流量都使用了HipHop。
相关文章:www.facebook.com/news.php?story=358&blog=1
本文出处:http://www.wengdo.com/php-xinwen/php-news-39.html
 

相关热词搜索:HipHop FaceBook PHP性能 优化PHP

上一篇:什么是Dedecms?
下一篇:XHP--FaceBook又一PHP改进项目

分享到: 收藏
评论排行