成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

干貨| PHPCon上TARS-PHP全面解讀及PPT下載

JasonZhang / 3215人閱讀

摘要:年月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項目首次全面發(fā)布版本,閱文集團高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗分享。分享內(nèi)容作為騰訊開源的框架,在發(fā)布之后即受到開源領(lǐng)域的關(guān)注。閱文集團本身也有一塊新的業(yè)務(wù)在使用。

2018年5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項目TARS首次全面發(fā)布PHP版本,閱文集團高級開發(fā)工程師梁晨對PHP如何通過TARS構(gòu)建高性能RPC框架做了經(jīng)驗分享。

分享內(nèi)容:

TARS作為騰訊開源的RPC框架,在發(fā)布之后即受到開源領(lǐng)域的關(guān)注。它在微服務(wù)、協(xié)議、多語言和運營體系上的支持,都非常的完善。在微服務(wù)方面,實現(xiàn)了服務(wù)自動發(fā)現(xiàn)、智能調(diào)度、容災(zāi)容錯、柔性熔斷,以及路由與灰度的功能。與此同時,通過使用私有二進制協(xié)議,可以有效的降低服務(wù)之間調(diào)用的流量。而在語言支持的層面,TARS對C++、Java、Nodejs、PYTHON都提供了比較好的方案??紤]到PHP在WEB后臺領(lǐng)域的使用非常的廣泛,TARS-PHP的出現(xiàn),勢在必行。

那么在設(shè)計TARS-PHP的時候,必須考慮到現(xiàn)有PHP的開發(fā)生態(tài),至少要做到 功能完善、靈活、輕量和高效。在功能方面,TARS-PHP對標(biāo)了現(xiàn)有的C++、JAVA、NodeJS的功能體系,做到了對CLIENT能力和SERVER能力的支持。而在靈活方面,PHP一直是出類拔萃的,作為泛型腳本語言,開發(fā)的過程,誰用誰知道。而在輕量設(shè)計方面,TARS-PHP遵循一個最簡化、輕量級、可插拔的設(shè)計想法,讓整個方案自成體系的同時,也能具備最大程度的可擴展性。最后,也是最重要的,高效。通過引入PHP業(yè)界優(yōu)秀的SWOOLE框架,再結(jié)合SWOOLE2.0的協(xié)程能力,讓TARS-PHP插上協(xié)程的翅膀。

TARS-PHP的解決方案,按照功能模塊,會分成以下四個部分:

TARS-CLIENT

TARS-EXT擴展

TARS-SERVER

開發(fā)效率模塊

TARS-CLIENT
對于熟悉TARS-PHP的同學(xué)來說,TARS-CLIENT的能力在半年前就已經(jīng)開源,并提供使用了。本次TARS-PHP的重新設(shè)計,也對TARS-CLIENT現(xiàn)有的能力做了一個梳理。全新設(shè)計之后的TARS-CLIENT具備了配置統(tǒng)一化、一鍵調(diào)用、以及多種網(wǎng)絡(luò)能力的特點。而在功能上,集成也更為豐富了,現(xiàn)有的TARS-CLIENT由如下的功能模塊組成:

自動尋址:CLIENT再也無需關(guān)系服務(wù)地址

主調(diào)上報:調(diào)用情況會默認(rèn)進行主調(diào)上報,服務(wù)情況一覽無遺

遠程日志:日志可以寫入遠程服務(wù),再落地,降低文件IO的損耗

網(wǎng)絡(luò)能力:SOCKET、SWOOLE同步、SWOOLE協(xié)程

全新設(shè)計后的TARS-CLIENT,既可以滿足后臺系統(tǒng)的SOCKET請求需求,也能夠滿足在SWOOLE中進行同步和協(xié)程的兩種調(diào)用需求,用戶只需要靈活的按照配置各取所需。同時,全新集成的自動尋址、主調(diào)上報、遠程日志功能,會讓用戶在使用的時候,更加的無感知,更加的順暢。

下面即是現(xiàn)有TARS-CLIENT的使用demo:

可以清晰的看到,統(tǒng)一化的配置,層級更為清晰,而且調(diào)用者無需關(guān)心底層細(xì)節(jié),尋址和主調(diào)上報已經(jīng)悄然完成。

再從整體的角度來看一下TARS-CLIENT的方案:

從圖中可以更為清晰的看到底層實現(xiàn)的細(xì)節(jié)。對于自動尋址而言,實現(xiàn)自動并不完全解決問題。因為每次都去詢問服務(wù)的地址,會給主控服務(wù)帶來很大的壓力。因此結(jié)合了PHP本身的能力之后,選用了SWOOLE TABLE和本地文件作為緩存的方式。緩存時間由服務(wù)啟動時默認(rèn)指定,那么在這個時間之內(nèi),便不會再次進行主控的請求。降低了主控壓力的同時,也降低了本地獲取服務(wù)地址的耗時。

而如下圖所示:主調(diào)上報的策略中,也能夠根據(jù)實際的網(wǎng)絡(luò)收發(fā)情況,進行耗時、失敗率、超時率、服務(wù)端異常的及時上報,方便業(yè)務(wù)盡快發(fā)現(xiàn)和定位問題。

TARS-EXT擴展
在TARS-CLIENT的底層,包含很多二進制協(xié)議的打包解包工作。而這些字符串的拼接和拷貝的操作恰恰是PHP的弱項,因此非常有必要將其抽象出來,作為獨立的PHP擴展模塊開發(fā)。

在現(xiàn)有擴展的體系中,主要包含了對高性能和穩(wěn)定性兩方面的考慮。高性能方面,字符串操作完全通過純C語言進行了實現(xiàn)。而同時通過合理設(shè)計接口,避免一次組包的多次操作,從而進一步提高效率。

而在擴展的穩(wěn)定性方面,通過引入phpt的擴展標(biāo)準(zhǔn)測試,以及Valgrind工具進行內(nèi)存泄露測試。測試代碼覆蓋率達到了80%以上。同時每次進行內(nèi)部版本代碼提交的時候,會自動觸發(fā)從PHP5.6~PHP7.2的主流版本自動構(gòu)建測試,并在發(fā)生構(gòu)建異常的時候,發(fā)送郵件。

下圖中可以清晰的看到,相比于原有的使用純PHP打包解包的方式,使用擴展的方式,在簡單協(xié)議的情況下,打包效率提升了16倍,解包效率提升了14倍。而在復(fù)雜協(xié)議的情況下,同樣效率的提升也達到了12和9倍之多。

TARS-SERVER
PHP作為SERVER走過了一段相對比較曲折的道路。最早時候,PHP是作為Apache的一個模塊,來提供HTTP-SERVER的服務(wù)的。后來在Nginx越來越盛行的情況下,PHP_FPM應(yīng)運而生。它比Apache的預(yù)先申請所有進程的方式稍好一些,但是仍然受制于進程資源和接受請求的能力,因此效率并不是很高。在這種大背景之下,SWOOLE應(yīng)運而生,它基于多進程的模型,常駐內(nèi)存并且使用epoll的事件驅(qū)動模型來處理收到的請求。因此在IO能力上甩之前的解決方案好幾條街。而在去年,SWOOLE2.0的出現(xiàn),內(nèi)置協(xié)程,同步編程的同時享受異步IO,更是如虎添翼。

基于此,TARS-SERVER的解決方案也會以SWOOLE作為底層的運行環(huán)境,開發(fā)出了TARS-HTTP-SERVER、TARS-TIMER-SERVER和TARS-TCP-SERVER,并且三個框架合一,只需簡單配置,即可順暢使用。

上圖中,可以很清晰的看到強大的TARS-SERVER能力。除了提供最底層的三種基本SERVER類型之外。我們還提供了TARS-UTILS用來處理配置文件解析,TARS-Report用來進行服務(wù)保活的定時上報,TARS-Config用來拉取平臺下發(fā)的配置,TARS-Property用來進行特性上報,以及TARS-Deploy模塊進行業(yè)務(wù)代碼的打包。這一整套的體系,使得TARS-SERVER的使用者既能夠?qū)崿F(xiàn)自己的業(yè)務(wù)邏輯,也能夠針對性的進行拓展??芍^一舉兩得。

總的來看,我們的TARS-SERVER,基于SWOOLE 1.x和2.x,同時能夠很順暢的支持靈活的配置,如SWOOLE的配置和用戶自己的配置。除此之外,TARS-SERVER通過自動生成的注解進行請求的路由,開發(fā)者完全不需要關(guān)心,只需要關(guān)注于實現(xiàn)自己的業(yè)務(wù)邏輯即可。而另一方面,TARS-SERVER還額外提供了一個管理端口,用來接收平臺下發(fā)的指令,如SHUTDOWN、配置下發(fā)等等。

TARS-HTTP-SERVER為了滿足邏輯層服務(wù)的需求,進行了專門設(shè)計。一期中包括了GET/POST基本支持、Cookie/Status標(biāo)準(zhǔn)支持、極簡的路由組件實現(xiàn)、FILE上傳功能模塊以及服務(wù)可用探測接口模塊。

而TARS-TIMER-SERVER的使用也非常方便,只需如下代碼:

時間可以靈活控制,同時所有定時服務(wù)放在一起也非常的方便管理。TIMER在服務(wù)啟動的時候,也會自動啟動,無需再次觸發(fā)。TIMER的數(shù)量,只受制于SWOOLE啟動時候的進程數(shù)量,開發(fā)者可以靈活的調(diào)配。

對于開發(fā)者非常關(guān)心的服務(wù)性能,我們也針對不同的接口、版本、CLIENT進行了壓測,結(jié)果如下:

從數(shù)據(jù)來看,還是非常的令人滿意??张艿腍TTP SERVER QPS最高達到了23萬。而使用了協(xié)程CLIENT之后,在混合RPC調(diào)用的情況下,仍有2萬1的QPS,相比于同步CLIENT,提升了50%左右。充分說明了協(xié)程CLIENT對于性能的提升作用明顯。

開發(fā)效率
在進行TARS-PHP設(shè)計的時候,一個必須要考慮的問題,就是開發(fā)效率。為了遵循TARS本身的設(shè)計理念,TARS2PHP工具也進行了全新的升級,通過配置文件的方式,同時兼容了客戶端代碼和服務(wù)端代碼的生成,配置文件中會包含服務(wù)信息、TARS文件信息、命名空間信息等等:

從下圖中,能夠更加明顯的看到整個開發(fā)的路徑:

由此,通過TARS文件、TARS2PHP工具,就能夠完全實現(xiàn)客戶端和服務(wù)端的代碼生成,并且兩端通過協(xié)議完全解耦,大大提高了開發(fā)效率。

TARS-PHP在閱文
TARS-PHP在閱文經(jīng)過了一年多的驗證和使用,也逐步趨向成熟,越來越多的業(yè)務(wù)開始了解和使用TARS-PHP這套方案,并為他們在實際的開發(fā)和運維中帶來了收益。

從下圖中可以非常明顯的看到TARS與TARS-PHP在運維的使用情況:

模板拼接的Node HTTP服務(wù)有10+,邏輯API層PHP服務(wù)與定時服務(wù) 40+,后臺TCP服務(wù)100+,每日之間億級調(diào)用。

后續(xù)規(guī)劃
隨著TARS-PHP整套方案越來越成熟,希望更多的公司和開發(fā)者能夠加入進來,共同建設(shè)。考慮到不同公司使用的框架并不相同,因此我們的模塊化設(shè)計做得非常徹底,在對SWOFT框架進行接入的過程中,模塊化的方式體現(xiàn)了非常大的成效,只需要半天到一天的時間即可完成。后續(xù)TARS-PHP也會進一步豐富CLIENT能力,同時支持更多的現(xiàn)有框架,在提高穩(wěn)定性的同時,對SERVER本身的功能豐富性,再做提升。TARS-PHP,等你來!

現(xiàn)場問答摘錄:

問:一個中小型的公司如何使用TARS
答:其實tars本身并不是非常的重量級,它主要是包含了一個一體化的運維系統(tǒng),以及專注于業(yè)務(wù)開發(fā)的一個rpc體系。閱文集團本身也有一塊新的業(yè)務(wù)在使用TARS。項目的機器規(guī)模也只是在幾十臺機左右,所以對于中小企業(yè)的公司來說,TARS也是一個可行的方案。

問:搭建一個TARS平臺成本比較高?如何解決這個問題
答:我們看到dockerhub?上面已經(jīng)有了開發(fā)者?熱情的開發(fā)者,做出了一套包含環(huán)境的Docker容器,我們會考慮功能是否完善,把它合進來或者是制作官方的鏡像,這樣用戶在運行的時候就會非常方便了。

問:TARS-PHP對于不同通信和二進制協(xié)議本身的支持怎么樣
答:現(xiàn)在TARS-PHP?TCP服務(wù)支持的協(xié)議,僅限于TARS二進制協(xié)議本身?但同時我們也提供了一些配置方式和接口,供大家實現(xiàn)自己的協(xié)議。而使用HTTP?SERVER的話,協(xié)議都是可以自己選擇的,比如JSON等等。

問:對于將已有PHP+Swoole1.x的項目遷移至TARS上,需要注意什么問題以及有沒有比較合適的解決方案
答:閱文集團之前也是各個PHP項目分別獨立部署在服務(wù)器上,沒有接入TARS平臺,但在去年經(jīng)過1個月左右的改造已經(jīng)全部遷移至TARS平臺,將已有項目遷移至TARS平臺除了需要對項目做一些必要的改造之外還需要保證后端TCP服務(wù)也已經(jīng)接入TARS,遷移可能會有一些成本,但是之后便能享受到TARS平臺帶來的一系列的紅利。

PPT下載:

https://github.com/Tencent/Ta... php目錄內(nèi)下載

對TARS使用還有任何問題,歡迎加入QQ交流群:
TARS交流群: 群號669339903 TARS-PHP交流群:群號:769531734

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30796.html

相關(guān)文章

  • 騰訊開源項目TARS首次全面發(fā)布PHP版本

    摘要:月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項目首次全面發(fā)布版本,閱文集團高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗分享。騰訊開源項目貢獻者,騰訊開發(fā)組成員,對于構(gòu)建高性能后臺微服務(wù)治理有豐富的經(jīng)驗。 5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項目TARS首次全面發(fā)布PHP版本,閱文集團高級開發(fā)工程師梁晨(Ted)對PHP如何通過TAR...

    appetizerio 評論0 收藏0
  • 騰訊與閱文技術(shù)合作 微服務(wù)框架Tars再添PHP

    摘要:引言作為由騰訊公司開源的優(yōu)秀框架與服務(wù)部署運維解決方案,被閱文集團引入了實際實踐中,同時閱文集團對在語言層面進行了能力的補全,令如虎添翼。作為騰訊公司的優(yōu)秀框架與服務(wù)部署運維解決方案,可以滿足上述的所有需求。 梁晨(Ted),任職閱文集團技術(shù)中心,負(fù)責(zé)起點中文網(wǎng)的WEB后臺開發(fā)工作。曾負(fù)責(zé)騰訊上海企業(yè)產(chǎn)品部營銷QQWeb后臺開發(fā)、QQ公眾號Web后臺開發(fā),對大型網(wǎng)站技術(shù)架構(gòu),有自己的經(jīng)...

    yanwei 評論0 收藏0
  • Container容器技術(shù)大會PPT分享

    摘要:大會是由國內(nèi)容器社區(qū)組織的專為一線開發(fā)者和運維工程師設(shè)計的頂級容器技術(shù)會議,會議強調(diào)實踐和交流,話題設(shè)置圍繞容器運維云計算等技術(shù)領(lǐng)域,力求全方位多角度為參會者解讀容器技術(shù)。 @Container大會是由國內(nèi)容器社區(qū) DockOne 組織的專為一線開發(fā)者和運維工程師設(shè)計的頂級容器技術(shù)會議,會議強調(diào)實踐和交流,話題設(shè)置圍繞容器、運維、云計算等技術(shù)領(lǐng)域,力求全方位、多角度為參會者解讀容器技術(shù)...

    Zachary 評論0 收藏0
  • 干貨 | 學(xué)習(xí)Python的正確姿勢

    摘要:勤學(xué)學(xué)習(xí)效率與效果取決于執(zhí)行力。這一步學(xué)習(xí)的正確姿勢是在實踐操作中發(fā)掘問題,然后帶著問題找答案。拆分任務(wù)將目標(biāo)分解成具體可執(zhí)行的學(xué)習(xí)任務(wù)。勤學(xué)強大的執(zhí)行力是學(xué)習(xí)的根本保障。分享復(fù)述檢驗學(xué)習(xí)成果,提高學(xué)習(xí)效果的最好方法。 showImg(https://segmentfault.com/img/bVbcPGZ?w=256&h=256); 前段時間和大家一起分享了一篇關(guān)于學(xué)習(xí)方法內(nèi)容《大牛...

    Thanatos 評論0 收藏0
  • A2M海站圓滿落幕,送你一份價值5800元的技術(shù)干貨PPT | 限時領(lǐng)取

    摘要:月日日,由主辦的人工智能與機器學(xué)習(xí)創(chuàng)新峰會在上海海神諾富特大酒店圓滿結(jié)束。簽到現(xiàn)場,秩序井然本次峰會匯聚了超過位國內(nèi)外頂級人工智能專家及一線技術(shù)大咖。本屆峰會共設(shè)置了個專題,大主題分會場并行。話題主要圍繞知乎搜索排序召回展開的。 人工智能的迅速發(fā)展深刻改變了世界的發(fā)展模式和人們的生活方式。5月18日-19日,由msup主辦的A2M人工智能與機器學(xué)習(xí)創(chuàng)新峰會在上海海神諾富特大酒店圓滿結(jié)束...

    huayeluoliuhen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<