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