5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,腾讯开源项目TARS首次全面发布PHP版本,阅文集团高级开发工程师梁晨(Ted)对PHP如何经过TARS构建高性能RPC框架作了经验分享。php
“现有PHP的开发生态,至少要作到功能完善、灵活、轻量和高效。 ”梁晨提道。他在分享中介绍了高性能RPC框架TARS的基本设计思想,以及经过客户端、二进制协议、服务端以及开发效率几个部分,分享了在PHP语言和框架层面的TARS解决方案TARS-PHP的设计与实现。网络
在客户端方面,TARS-PHP客户端具有配置统一化、一键调用以及多种网络能力的特色。功能上支持自动寻址、主调上报、远程日志以及SOCKET、SWOOLE同步、SWOOLE协程的网络能力。同时可以根据实际的网络收发状况,进行耗时、失败率、超时率、服务端异常的及时上报,方便业务尽快发现和定位问题。架构
在二进制协议方面,TARS-PHP经过独立PHP模块扩展完成了对二进制协议的打包解包工做,同时考虑了高性能和稳定性两个方面。经过合理设计接口并彻底经过纯C语言实现,提升性能。经过引入phpt的扩展标准测试及Valgrind工具测试等,覆盖80%以上的测试代码,提高稳定性。相比于原有的纯PHP打包解包方式,该扩展将打包效率提高了12-16倍,解包效率也提高了9-14倍。框架
在服务端方面,TARS-PHP服务端以SWOOLE做为底层的运行环境,只须要简单配置,便可顺畅使用。除此以外,TARS-PHP服务端经过自动生成的注解进行请求的路由,开发者彻底不须要关心,只须要关注于实现本身的业务逻辑便可。除了提供基本的SERVER类型以外,还提供了配置文件解析、服务保活上报、拉取下发配置、特性上报、业务代码打包整套体系,使得使用者既可以实现本身的业务逻辑,也可以针对性的进行拓展。从测试数据看,空跑的HTTP SERVER QPS最高达到了23万。而使用了协程CLIENT以后,在混合RPC调用的状况下,仍有2万1的QPS,相比于同步CLIENT,提高了50%左右。运维
在开发效率方面,TARS-PHP升级了全新的TARS2PHP工具,经过TARS文件和TARS2PHP工具,就可以彻底实现客户端和服务端的代码生成,而且两端经过协议彻底解耦,大大提升了开发效率。微服务
他以阅文集团的实践为例,介绍TARS-PHP在阅文通过了一年多的验证和使用,目前支持十几个Node HTTP服务,40多个逻辑API层PHP服务与定时服务,以及100多个后台TCP服务,各服务之间每日亿级的调用,带来的开发、运维、性能的全面提高。工具
最后梁晨介绍了后续的规划,TARS-PHP会在提升稳定性的同时支持更多框架、丰富功能、再作提高。他同时呼吁更多公司和开发者加入进来一块儿共同建设,让TARS-PHP愈来愈好。性能
梁晨(Ted),阅文集团高级开发工程师,起点中文网WEB后台架构负责人。曾就任于腾讯,负责企业QQ与QQ公众号后台开发与优化工做。腾讯TARS开源项目贡献者,腾讯TSF开发组成员,对于构建高性能WEB后台、微服务治理有丰富的经验。测试