大家好,接下來 45 分鐘的時間,我想跟大家聊聊 TARS 作為微服務平臺本身有什么優(yōu)勢,同時也想讓大家看到,TARS-PHP 核心開發(fā)組在這一年中,不斷演進 TARS-PHP,將其融入 PHP 生態(tài)的努力,看看這對整個 TARS 微服務生態(tài)有些什么意義。
從近年來的業(yè)界架構(gòu)演進來看,微服務已經(jīng)逐漸成為趨勢。從這張圖可以看到,在不同的行業(yè),發(fā)布服務的時間間隔各不相同,互聯(lián)網(wǎng)行業(yè)每周發(fā)布的占比最高,但是其它行業(yè)也有逐漸趕上的趨勢。
我們可以看到具體的發(fā)布數(shù)據(jù),63%%u7684企業(yè)平均每月發(fā)布一次。怎么將系統(tǒng)轉(zhuǎn)到微服務架構(gòu)上呢?現(xiàn)在有很多選擇,接近 10% %u7684人選擇 Dubbo 這樣的原生框架,接近 50% %u7684人選擇云原生架構(gòu),同時也有 30% %u5DE6右的人基于 Weblogic WEBSPHERE 等架構(gòu)。而在這其中,51% %u8003慮轉(zhuǎn)型,15% %u5DF2經(jīng)實施。
從這些數(shù)據(jù)中我們可以看得出來微服務架構(gòu)當前逐漸成為主流。
伴隨著微服務架構(gòu)的這種快速發(fā)展節(jié)奏,各種開發(fā)語言各種類型的微服務開發(fā)框架相繼出現(xiàn),我們分析了一下當前各家使用微服務框架的情況,可以看到主要分為四種模式:
無服務治理類:gRPC、brpc 為代表
單語言帶服務治理類:Dubbo、Spring Cloud 為代表,主要適用于 Java 語言
多語言帶服務治理類:TARS
Service Mesh:SideCar 模式,仍在發(fā)展成熟期
這其中,TARS 在通信框架的基礎上支持服務治理能力,同時支持多種編程語言,算是比較另類的選擇。講到這里,我們可以來看看它具體支持怎樣的治理能力,在此之前,先了解一下微服務架構(gòu)是怎樣的。
從微服務整體架構(gòu)上看,它主要分為:接入層、網(wǎng)關層、業(yè)務服務層、支持服務層和基礎設施層。除此之外,非常重要而又容易被忽略的還有:微服務開發(fā)框架、持續(xù)交付流水線、端到端工具鏈、工程實踐與規(guī)范這些構(gòu)成整個微服務架構(gòu)體系的部分,它們都在微服務的架構(gòu)中發(fā)揮著非常重要的作用。
TARS 整體可以分為運營、平臺、通信框架、公共組件與統(tǒng)一協(xié)議幾個大塊,用于支持上述微服務架構(gòu)層次。
簡單來講,運營平臺上,TARS 可以支持不同語言服務的管理和運營,同時也支持頁面級別服務的創(chuàng)建和發(fā)布;而在公共組件上,TARS 提供了非常多強大的公共組件來負責不同的功能,包括日志組件、監(jiān)控組件、主控組件與配置組件等;統(tǒng)一協(xié)議方面,TARS 本身自帶的二進制協(xié)議,非常適合高性能的場景,首先這個協(xié)議語言無關,自帶接口描述,同時還有工具進行代碼轉(zhuǎn)換,可以大大提高開發(fā)效率。
聚焦到 TARS-PHP 上,作為Tars在PHP語言的解決方案,設計的時候主要考慮如下四個方面:
功能完善:對標現(xiàn)有 C 、Java 與 NodeJS 體系功能
靈活:論靈活,誰與 PHP 爭鋒?
輕量:用最輕量的設計,點到即止,即插即用
高效:插上 Swoole 協(xié)程的翅膀,不得不飛
整個框架主要分為四個部分:
TARS-CLIENT
TARS-SERVER
TARS-EXT 擴展
代碼生成工具
在過去的一年中,TARS-PHP 主要在豐富現(xiàn)有功能、構(gòu)建更加開放的體系、引入 DevOps 的效率、更好地服務社區(qū)四個方面發(fā)力。
從 TARS-SERVER 功能層面來講,TARS-PHP 新增了 WebSocket Server 和 PB SERVER,使得現(xiàn)在一個服務模板,能夠?qū)崿F(xiàn)多達五種不同的服務。
通過使用 WebSocket Server,用戶可以有效擴展 Swoole 功能,它支持多個端口、自定義
命令和非常靈活化的 FD 存儲。
PB Server 構(gòu)建了一個 gRPC 服務,這個服務部署在 TARS 平臺上,參與 TARS 平臺尋址,受 TARS 平臺管理。這個服務使用 gRPC on Http/2 作為網(wǎng)絡通訊協(xié)議,使用 Protobuf 作為編碼協(xié)議,可以和其它 PB Client 協(xié)同工作。
在開發(fā)效率上,我們也針對 PB Client 做了優(yōu)化,開發(fā)者同樣可以通過我們提供的代碼自動化生產(chǎn)工具,節(jié)約開發(fā)時間。
在 TARS-PHP 與平臺更好地結(jié)合方面,我們實現(xiàn)了針對 PHP 服務的專有特性監(jiān)控,它可以監(jiān)控 Swoole 的 worker 數(shù)量、TIME_WAIT 等網(wǎng)絡狀態(tài)個數(shù)與 Swoole 中每個 worker 占用的內(nèi)存情況等數(shù)據(jù),讓開發(fā)者更了解自己的服務。
同時,新增的自定義路由功能,也賦能了現(xiàn)有的 HTTP SERVER,通過引入 lumen 引擎的方式,現(xiàn)在的路由功能也更加強大。
在日志方面,借助 monolog 的能力,我們與 ELK 也進行了結(jié)合。簡單的配置,就可以讓日志入 ELK,更加方便我們進行一些 debug 或是后續(xù)的數(shù)據(jù)挖掘。
為了構(gòu)建 TARS-PHP 的開放體系,我們引入了 Client & Server filters,它可以讓開發(fā)者更加方便地在請求前后添加自己的代碼。同時我們也開放了 TARS 協(xié)議中,向 Context 上下文寫入的能力,使得分布式追蹤唾手可得。
而為了讓 PHP 開發(fā)者能夠更多地使用 TARS,同時降低自己的遷移成本,TARS-PHP 現(xiàn)在也與 Laravel、ThinkPHP、Yii2、SWOFT 與 Phalcon 進行了整合,后續(xù)還將重點接入 Hyperf 與 easyswoole 等業(yè)界優(yōu)秀的框架。通過接入 TARS,相當于賦能了服務打包、云配置與 HTTP/TARS 雙協(xié)議,又能保持原有的開發(fā)框架,一舉兩得。
在 DevOps 方面,TARS 提供了官方的 docker 鏡像,讓開發(fā)者能夠一鍵搭建開發(fā)環(huán)境。而在持續(xù)集成上,我們也提供了基于 Jenkins 和 TARS 平臺 API 的自動構(gòu)建方案,讓你的代碼提交到測試到部署,成為一條龍。
為了讓開發(fā)者能夠更快地使用 TARS,我們也放出了一個使用 TARS 的 HTTP、TCP 與 PB 在內(nèi)的多種 Server 類型的彈幕服務,存儲也涉及到了 Redis 和 mysql,可以讓開發(fā)者更容易在自己的項目里把 TARS 跑起來。
TARS-PHP 的開源之路剛剛起步,為了解決文檔問題,我們也不斷地完善現(xiàn)有的 Gitbook,降低開發(fā)者的使用門檻。
在 TARS-PHP 開源一年左右的時間里,我們的項目與衍生項目數(shù)超過了 10 個、GitHub repo commit 數(shù)量超過 200 次、微信與 QQ 群累計開發(fā)者社群人數(shù) 800 、Packagelist 下載量 4萬 。希望大家也能夠加入 TARS-PHP 的建設。
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn