騰訊開源專案TARS首次全面釋出PHP版本

騰訊開源發表於2019-02-28

5月19日,在上海舉行的第六屆中國PHP開發者大會(PHPCon)上,騰訊開源專案TARS首次全面釋出PHP版本,閱文集團高階開發工程師樑晨(Ted)對PHP如何通過TARS構建高效能RPC框架做了經驗分享。

“現有PHP的開發生態,至少要做到功能完善、靈活、輕量和高效。 ”樑晨提道。他在分享中介紹了高效能RPC框架TARS的基本設計思想,以及通過客戶端、二進位制協議、服務端以及開發效率幾個部分,分享了在PHP語言和框架層面的TARS解決方案TARS-PHP的設計與實現。

騰訊開源專案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越來越好。

騰訊開源專案TARS首次全面釋出PHP版本

樑晨(Ted),閱文集團高階開發工程師,起點中文網WEB後臺架構負責人。曾就職於騰訊,負責企業QQ與QQ公眾號後臺開發與優化工作。騰訊TARS開源專案貢獻者,騰訊TSF開發組成員,對於構建高效能WEB後臺、微服務治理有豐富的經驗。


相關文章