php 擴(kuò)展開(kāi)發(fā)閱文對(duì)PHP如何通過(guò)TARS構(gòu)建高性能RPC框架做經(jīng)驗(yàn)分享php開(kāi)發(fā)app微信支付接口開(kāi)發(fā)教程
2021-12-03
今天(5月19日)php 擴(kuò)展開(kāi)發(fā),在上海召開(kāi)的第六屆中國(guó)PHP開(kāi)發(fā)者大會(huì)()上,騰訊開(kāi)源項(xiàng)目TARS首次發(fā)布了PHP版本。閱文集團(tuán)高級(jí)開(kāi)發(fā)工程師梁晨(Ted)詢問(wèn)PHP如何通過(guò)TARS 搭建高性能RPC框架的經(jīng)驗(yàn)分享。
“現(xiàn)有的PHP開(kāi)發(fā)生態(tài)至少要功能齊全、靈活、輕量級(jí)、高效。” 梁辰說(shuō)道。在分享中,他介紹了高性能RPC框架TARS的基本設(shè)計(jì)思路,并通過(guò)客戶端、二進(jìn)制協(xié)議、服務(wù)器和開(kāi)發(fā)效率部分,在PHP語(yǔ)言和框架層面分享了TARS解決方案TARS-PHP的設(shè)計(jì)。和實(shí)現(xiàn)。
在客戶端,TARS-PHP客戶端具有統(tǒng)一配置、一鍵調(diào)用、多網(wǎng)絡(luò)能力等特點(diǎn)。在功能上,它支持自動(dòng)尋址、主調(diào)用報(bào)告、遠(yuǎn)程日志記錄以及同步和協(xié)程等網(wǎng)絡(luò)能力。同時(shí)可以根據(jù)實(shí)際網(wǎng)絡(luò)收發(fā)情況及時(shí)上報(bào)耗時(shí)、故障率、超時(shí)率、服務(wù)器異常等,方便業(yè)務(wù)第一時(shí)間發(fā)現(xiàn)和定位問(wèn)題
在二進(jìn)制協(xié)議方面,TARS-PHP通過(guò)獨(dú)立的PHP模塊擴(kuò)展完成了二進(jìn)制協(xié)議的打包和解包,同時(shí)兼顧了高性能和穩(wěn)定性兩個(gè)方面。通過(guò)合理設(shè)計(jì)接口并完全用純C語(yǔ)言實(shí)現(xiàn)來(lái)提高性能。通過(guò)引入phpt的擴(kuò)展標(biāo)準(zhǔn)測(cè)試和工具測(cè)試,覆蓋了80%以上的測(cè)試代碼php 擴(kuò)展開(kāi)發(fā),提高了穩(wěn)定性。與原來(lái)的純PHP打包解包方式相比,本次擴(kuò)展打包效率提高了12-16倍,解包效率提高了9-14倍。
在服務(wù)器端,使用 TARS-PHP 服務(wù)器作為底層運(yùn)行環(huán)境。它只需要簡(jiǎn)單的配置,就可以順利使用。此外,TARS-PHP 服務(wù)器通過(guò)自動(dòng)生成的注釋路由請(qǐng)求。開(kāi)發(fā)者根本不需要關(guān)心,只需要專注于實(shí)現(xiàn)自己的業(yè)務(wù)邏輯即可。除了提供基礎(chǔ)類型外微信公眾號(hào)開(kāi)發(fā),還提供了完整的配置文件分析、服務(wù)?;钌蠄?bào)、拉取和發(fā)布配置、特性上報(bào)、業(yè)務(wù)代碼打包等系統(tǒng),讓用戶不僅可以實(shí)現(xiàn)自己的業(yè)務(wù)邏輯,也有針對(duì)性地展開(kāi)。從測(cè)試數(shù)據(jù)來(lái)看,空跑的HTTP QPS達(dá)到了23萬(wàn)。使用協(xié)程后,在混合RPC調(diào)用的情況下,QPS仍然是21,
在開(kāi)發(fā)效率方面,TARS-PHP 升級(jí)了一個(gè)全新的工具。通過(guò)TARS文件和工具,可以完全實(shí)現(xiàn)客戶端和服務(wù)端的代碼生成,兩端通過(guò)協(xié)議完全解耦,大大提高了開(kāi)發(fā)效率。
以閱讀群的實(shí)踐為例,介紹TARS-PHP在閱讀中已經(jīng)驗(yàn)證使用一年多,目前支持十幾個(gè)Node HTTP服務(wù),40多個(gè)邏輯API層PHP服務(wù)和定時(shí)服務(wù),以及100多個(gè)后端TCP服務(wù),每天服務(wù)間調(diào)用數(shù)億次,帶來(lái)開(kāi)發(fā)、運(yùn)維、性能的全面提升。
最后,梁辰介紹了后續(xù)計(jì)劃。TARS-PHP 將支持更多的框架、豐富的功能和升級(jí),同時(shí)提高穩(wěn)定性。他還號(hào)召更多的公司和開(kāi)發(fā)者加入進(jìn)來(lái),共同建設(shè),讓TARS-PHP越來(lái)越好。
梁晨(Ted),閱文集團(tuán)高級(jí)開(kāi)發(fā)工程師,啟迪網(wǎng)WEB后端架構(gòu)負(fù)責(zé)人。曾就職于騰訊,負(fù)責(zé)公司QQ和QQ公眾號(hào)的開(kāi)發(fā)和優(yōu)化。騰訊TARS開(kāi)源項(xiàng)目貢獻(xiàn)者小程序開(kāi)發(fā),騰訊TSF開(kāi)發(fā)團(tuán)隊(duì)成員,具有豐富的高性能WEB后臺(tái)搭建和微服務(wù)治理經(jīng)驗(yàn)。