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後臺、微服務治理有豐富的經驗。測試