1. 云栖社区>
  2. PHP教程>
  3. 正文

专访百度胡志广:HHVM at baidu、HHVM VS. PHP深度对比

作者:用户 来源:互联网 时间:2017-12-01 15:57:33

phpvs百度baidu深度对比专访HHVM志广

专访百度胡志广:HHVM at baidu、HHVM VS. PHP深度对比 - 摘要: 本文讲的是专访百度胡志广:HHVM at baidu、HHVM VS. PHP深度对比, 2016年8月12日-13日,由CSDN重磅打造的 互联网应用架构实战峰会、运维技术与实战峰会 将在成都举行。 这是继SDCC 2016架构技术峰会(上海站,官网、 图文直播 、 架构峰会PPT 、数据库峰会PPT)和SDCC 2

2016年8月12日-13日,由CSDN重磅打造的 互联网应用架构实战峰会、运维技术与实战峰会 将在成都举行。

这是继SDCC 2016架构技术峰会(上海站,官网、 图文直播 、 架构峰会PPT 、数据库峰会PPT)和SDCC 2016架构技术峰会(深圳站,官网、 图文直播 、 架构峰会PPT 、数据库峰会PPT)圆满收官后的再一次相聚。上海站和深圳站上,共计36位演讲嘉宾给超过700名的现场参会者带来了精彩分享。火爆程度超出主办方想象,为响应广大网友们的热情期盼,我们决定在8月12-13日,在成都,继续举办一场技术峰会,技术人相约成都,不说再见。

即将到来的SDCC 2016成都技术峰会讲师阵容强大,主办方邀请了来自于百度、阿里、腾讯、京东、华为、小米、乐视、美团、聚美优品、当当网、中国电信、云霁科技、亚信、YY互娱、ThoughtWorks等公司的技术骨干来为与会者分享演讲和交流。

本届大会,我们邀请了百度资深工程师胡志广,带来题为 《支撑百亿级流量PHP引擎HHVM在百度的架构实战》的主题分享 ,内容主要涉及:baidu为什么用HHVM、HHVMin baidu、HHVM vs PHP7。

我们借此机会采访了胡志广老师,他分享了从HHVM在百度的应用,以及深度对比了HHVM和PHP。

受访嘉宾介绍:

专访百度胡志广:HHVM at baidu、HHVM VS. PHP深度对比

百度资深工程师胡志广

胡志广,百度资深工程师,2013年加入百度,2008到2012年在两家创业公司做技术负责人,2012-2013年在京东负责性能优化方向主要有hhvm,nginx;目前百度负责HHVM方向和百度私有云机器管理方向(包括检测,维修,环境管理)以及建设lamp.baidu.com。此外,他还擅长性能优化、网络、PHP、编译和分布式系统;开源社区多次贡献HHVM源码,并且在2013年9月Facebook在HHVM Blog对HHVM提出了肯定和感谢,多次进行技术和进度交流。

【以下为专访正文】 CSDN:请简单介绍下您和目前的工作,以及关注的领域。

胡志广:2008年-2012年在2家创业公司分别担任技术负责人,主要负责过ERP、搜索引擎、爬虫、BI、舆情分析、大数据分析方向;2012-2013年加入京东负责京东性能优化包括nginx和HHVM;

2013年加入百度主要负责HHVM方向,实现了HHVM在百度生态并将大部分PHP服务切入HHVM;目前负责百度私有云机器管理方向(故障检测、环境管理、自动化维修)。

CSDN:HHVM目前在百度有着怎样的应用。

胡志广:HHVM在百度目前大业务线的PHP均上线了HHVM,覆盖几千台机器,日处理PV在近千亿,CPU节约50%左右(非IO型服务),并且百度已经支持了HHVM生态包括扩展框架、一键式部署、容灾容错、单测和回归方案;目前支持扩展30多个,通用扩展如protobuf、shmop、ap(yaf)等

CSDN:HHVM和PHP7相比的话,有没有可能会失去优势,因为性能差不了太多,但是需要的劳动比PHP7要多,大概意思就是HHVM有学习成本,PHP7几乎没有,未来HHVM的前途是怎么样的。

胡志广:我觉得PHP7和HHVM 这个上面大家用哪个都可以,哪个方便用哪个,我建议小公司没必要折腾HHVM成本高,大公司我建议可以调研一些HHVM,肯定是有收益的;

PHP7从5到7其实飞跃还是很大的,性能提高也很多,但我觉得HHVM在PHP7的出现还是起到了决定性作用的,至少在2012年-2015年间HHVM 在性能上还是绝对领先的,那么我先说下PHP7的优化点:

zval的优化从PHP5的24bytes优化到PHP7的16bytes; hashtable优化从链式优化为开放式,hashtable从72 bytes降到56 bytes ,bucket size从72 bytes降到32bytes,减少了cpu miss; 内存管理模式也借鉴了jemalloc的模式管理内存,并且提升了cpu cache; 添加了强类型支持;

编译环节增加了ast。

PHP7优化点均摘自:《PHPNG a New Core for PHP7 @Dmitry Stogov》和《The Secret of PHP7’s Performance @Laruence》。

我们看下HHVM和PHP7对比:

HHVM的数据结构TypeValue等价PHP的zval,HHVM的TypeValue也是16bytes,但是HHVM在12年的时候数据结构就已经做过类似PHP7的优化了,有兴趣大家可以看一下HHVM的TypeValue数据结构; hashtable HHVM 同样是开放式的,数据结构也和PHP 7是类似的; 内存管理模式最早HHVM用的是tcmalloc,后面用的是jemalloc; HHVM的hack语法是强类型; HHVM在hiphop时代就支持了ast; HHVM支持jit ,PHP7虽然也有jit支持但是目前不完善; async语法支持(PHP可用swoole等); opcache持久化,PHP无; HHVM多线程模型,PHP7多进程模型,HHVM支持http server。

所以我认为HHVM 相对来讲还是有一定的优势的(最大的优势来讲还是JIT),但是PHP7发展真的很快,百度内部其实一直没有停止2个引擎的调研,个人建议小公司的话可以用PHP7 提高性能,规模大一些的公司可以调研HHVM,HHVM 相对来讲还是有一些性能优势的,但是学习成本高些,但是可以用 百度的免依赖版本 尝试;

CSDN:HHVM和PHP7相比的话,有没有可能会失去优势,因为性能差不了太多。

胡志广:HHVM和PHP7性能差异我在上一个问题中有阐述,HHVM相对PHP7来讲目前还是性能还是有一定优势的,HHVM也在逐渐在做好兼容性。

但是需要的劳动比PHP7要多,大概意思就是HHVM有学习成本,PHP7几乎没有。

我不认为HHVM比PHP7劳动要多,相对来讲搞不定HHVM的一样搞不定PHP7。

对于使用者HHVM 有几个问题:

编译问题; 扩展支持问题; 功能支持和稳定性问题。

上面的几个问题在PHP7中同样会遇到,但是PHP7的编译依赖比HHVM少,相对编译速度也快很多,这个是PHP7的一个优势;

百度内部解决HHVM问题形成了HHVM 生态:

编译框架,依赖和HHVM源独立编译一键化编译,使用者无需关注HHVM; 扩展框架,扩展框架支持,包括单测框架、回归框架等; HHVM独立团队维护稳定性和优化。

在百度内部来讲HHVM是没有学习成本的,对于外部人员来讲其实只要搞定编译问题,大部分扩展已经支持,这些成本其实和PHP7是相似的,所以我认为HHVM学习成本也不是很大。

CSDN:未来HHVM的前途是怎么样的。

胡志广:我觉得HHVM和PHP7是一个互相推进的项目,而且HHVM有Facebook独立团队支持,我个人觉得还是可以看到前景的,PHP7的发展速度也很速度,所以2个项目我都很看好,有竞争对于PHP用户来讲才是福音,但是我认为HHVM的重点应该在性能、异步和hack语言上。

CSDN:根据您多年的使用开发经历,HHVM目前的瓶颈是什么。

胡志广:HHVM来看,我之前和Facebook的开发者沟通过,他们认为HHVM的目标还是在性能上,但是目前HHVM已经实现了很好的性能,突破点已经很小了,这里是目前HHVM 的一个瓶颈。

此外,HHVM之前尝试过用LLVM优化jit但是最终没有性能优势只能作为一种调研性项目。

我认为HHVM后续的优化重点会在hack、异步、协程、还有特定的项目优化,但是再找到一个能够飞跃性的优化目前来看难度还是很大的,除非能够有一个特殊的模型或者其他突破能够让HHVM 100%兼容PHP时,并且性能卓越,我认为如果HHVM可以在协程发力将现有模型改为协程,也许会成为下一个GO,我觉得那时候也许HHVM会再度火热。

CSDN:这个东西在大厂用稳定性一般如何保证,或守护进程。

胡志广:所有的程序都不能说100%的稳定,万物皆有BUG,但是你容错和保证线上稳定性是一个大问题,百度在使用HHVM 的稳定来讲做了如下几件事情:

旁路迁移,初期小流量上线时HHVM 做渲染,PHP引擎执行其他部分,通过shmop通信(共享内存),HHVM出现错误后,仍然回到PHP处理; webserver通过捕捉错误码跳转容错,如果HHVM挂了后,然后将流量切到PHP上执行,但是如果一旦全部挂则会出现雪崩,目前来讲都是双HHVM热备; HHVM挂掉后(crash、内存oom等)都会通过保活程序拉起; 对于稳定性问题(如Crash、内存泄露、Diff、死锁、CPU异常等)会及时跟进,第一时间处理解决问题。

稳定性对于百度这种大厂来讲是很重要的,所以在上线前都需要做各种的回归测试、线上监控和容错方案来让HHVM运行更稳定。

CSDN:你目前还会关注哪些新技术。给学习PHP或者HHVM的开发者一些建议吧。

胡志广:我关注的领域比较多,比如虚拟机和编译领域我会关注如Pypy、Hippy、JVM这些;云方面会关注Docker、Kubernetes这些;其他方面如:Nginx、spdy、缓存服务、NoSQL等;

我建议PHP的开发者可以关注一些底层的实现这样更可以了解如何写好PHP,对于扩展实现和PHP虚拟机的结构了解后,能够更好写好PHP程序;我觉得PHP开发者不要局限于PHP语言,应该往更大的范围去看,如前端Web Server、Cache、到后端的Cache和DB层、分布式系统方面等。

CSDN:在本次SDCC 2016(成都站)大会上分享的话题是。

胡志广:我这次分享主要有几个侧重点:

baidu 为什么用HHVM,HHVM in baidu,HHVM vs PHP7 baidu 为什么用HHVM 会讲述前期百度的调研选型; HHVM in baidu 中会讲:HHVM使用问题、迁移方案,上线效果,HHVM 百度生态,HHVM的百度优化及线上问题分析 HHVM vs PHP7中会讲:PHP7的优化,HHVM 和PHP7 的差异点和优缺点,HHVM原理和对于目前HHVM和PHP7选型困惑建议。

8月5日24点前,SDCC 2016架构&运维峰会·成都站,仍处于八折优惠票价阶段,单场峰会(含餐)门票只需799元,5人以上团购或者购买两场峰会通票更有特惠,限量供应,预购从速。( 票务详情链接 )。

更多详细内容参见官网网址: SDCC数据库&架构峰会成都站 , 大会报名 。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , vs , 百度 , baidu , 深度 , 对比 , 专访 , HHVM 志广 ,以便于您获取更多的相关知识。