Linux系統技術交流QQ羣(1675603)驗證問題答案:劉遄php
導讀 | 誕生於 2014 年的「微服務架構」,其思想經由 Martin Fowler 闡述後,在近幾年持續受到重視,理論與相關實踐都不斷髮展,目前談架構一定會言及微服務架構。 |
伴隨着微服務架構的快速發展,各類開發語言各類類型的微服務開發框架陸續出現,在近日舉辦的 PHPCon 大會上,來自開源微服務框架 TARS 核心開發組的梁晨,爲開發者分享了 TARS-PHP 在 TARS 構建微服務生態中扮演的角色。梁晨同時也是 TARS-PHP 項目的主要負責人,如下是本次演講全程的整理。
html
你們好,接下來 45 分鐘的時間,我想跟你們聊聊 TARS 做爲微服務平臺自己有什麼優點,同時也想讓你們看到,TARS-PHP 核心開發組在這一年中,不斷演進 TARS-PHP,將其融入 PHP 生態的努力,看看這對整個 TARS 微服務生態有些什麼意義。linux
從近年來的業界架構演進來看,微服務已經逐漸成爲趨勢。從這張圖能夠看到,在不一樣的行業,發佈服務的時間間隔各不相同,互聯網行業每週發佈的佔比最高,可是其它行業也有逐漸遇上的趨勢。
編程
咱們能夠看到具體的發佈數據,63%的企業平均每個月發佈一次。怎麼將系統轉到微服務架構上呢?如今有不少選擇,接近 10% 的人選擇 Dubbo 這樣的原生框架,接近 50% 的人選擇雲原生架構,同時也有 30% 左右的人基於 Weblogic WEBSPHERE 等架構。而在這其中,51% 考慮轉型,15% 已經實施。
微信
從這些數據中咱們能夠看得出來微服務架構當前逐漸成爲主流。swoole
伴隨着微服務架構的這種快速發展節奏,各類開發語言各類類型的微服務開發框架相繼出現,咱們分析了一下當前各家使用微服務框架的狀況,能夠看到主要分爲四種模式:網絡
無服務治理類:gRPC、brpc 爲表明架構
單語言帶服務治理類:Dubbo、Spring Cloud 爲表明,主要適用於 Java 語言框架
多語言帶服務治理類:TARS編程語言
Service Mesh:SideCar 模式,仍在發展成熟期
這其中,TARS 在通訊框架的基礎上支持服務治理能力,同時支持多種編程語言,算是比較另類的選擇。講到這裏,咱們能夠來看看它具體支持怎樣的治理能力,在此以前,先了解一下微服務架構是怎樣的。
從微服務總體架構上看,它主要分爲:接入層、網關層、業務服務層、支持服務層和基礎設施層。除此以外,很是重要而又容易被忽略的還有:微服務開發框架、持續交付流水線、端到端工具鏈、工程實踐與規範這些構成整個微服務架構體系的部分,它們都在微服務的架構中發揮着很是重要的做用。
TARS 總體能夠分爲運營、平臺、通訊框架、公共組件與統一協議幾個大塊,用於支持上述微服務架構層次。
簡單來說,運營平臺上,TARS 能夠支持不一樣語言服務的管理和運營,同時也支持頁面級別服務的建立和發佈;而在公共組件上,TARS 提供了很是多強大的公共組件來負責不一樣的功能,包括日誌組件、監控組件、主控組件與配置組件等;統一協議方面,TARS 自己自帶的二進制協議,很是適合高性能的場景,首先這個協議語言無關,自帶接口描述,同時還有工具進行代碼轉換,能夠大大提升開發效率。
聚焦到 TARS-PHP 上,做爲Tars在PHP語言的解決方案,設計的時候主要考慮以下四個方面:
功能完善:對標現有 C++、Java 與 NodeJS 體系功能
靈活:論靈活,誰與 PHP 爭鋒?
輕量:用最輕量的設計,點到即止,即插即用
高效:插上 Swoole 協程的翅膀,不得不飛
整個框架主要分爲四個部分:
TARS-CLIENT
TARS-SERVER
TARS-EXT 擴展
代碼生成工具
在過去的一年中,TARS-PHP 主要在豐富現有功能、構建更加開放的體系、引入 DevOps 的效率、更好地服務社區四個方面發力。
從 TARS-SERVER 功能層面來說,TARS-PHP 新增了 WebSocket Server 和 PB SERVER,使得如今一個服務模板,可以實現多達五種不一樣的服務。
經過使用 WebSocket Server,用戶能夠有效擴展 Swoole 功能,它支持多個端口、自定義命令和很是靈活化的 FD 存儲。
PB Server 構建了一個 gRPC 服務,這個服務部署在 TARS 平臺上,參與 TARS 平臺尋址,受 TARS 平臺管理。這個服務使用 gRPC on Http/2 做爲網絡通信協議,使用 Protobuf 做爲編碼協議,能夠和其它 PB Client 協同工做。
在開發效率上,咱們也針對 PB Client 作了優化,開發者一樣能夠經過咱們提供的代碼自動化生產工具,節約開發時間。
在 TARS-PHP 與平臺更好地結合方面,咱們實現了針對 PHP 服務的專有特性監控,它能夠監控 Swoole 的 worker 數量、TIME_WAIT 等網絡狀態個數與 Swoole 中每一個 worker 佔用的內存狀況等數據,讓開發者更瞭解本身的服務。
同時,新增的自定義路由功能,也賦能了現有的 HTTP SERVER,經過引入 lumen 引擎的方式,如今的路由功能也更增強大。
在日誌方面,藉助 monolog 的能力,咱們與 ELK 也進行告終合。簡單的配置,就可讓日誌入 ELK,更加方便咱們進行一些 debug 或是後續的數據挖掘。
爲了構建 TARS-PHP 的開放體系,咱們引入了 Client & Server filters,它可讓開發者更加方便地在請求先後添加本身的代碼。同時咱們也開放了 TARS 協議中,向 Context 上下文寫入的能力,使得分佈式追蹤唾手可得。
而爲了讓 PHP 開發者可以更多地使用 TARS,同時下降本身的遷移成本,TARS-PHP 如今也與 Laravel、ThinkPHP、Yii二、SWOFT 與 Phalcon 進行了整合,後續還將重點接入 Hyperf 與 easyswoole 等業界優秀的框架。經過接入 TARS,至關於賦能了服務打包、雲配置與 HTTP/TARS 雙協議,又能保持原有的開發框架,一箭雙鵰。
在 DevOps 方面,TARS 提供了官方的 Docker 鏡像,讓開發者可以一鍵搭建開發環境。而在持續集成上,咱們也提供了基於 Jenkins 和 TARS 平臺 API 的自動構建方案,讓你的代碼提交到測試到部署,成爲一條龍。
爲了讓開發者可以更快地使用 TARS,咱們也放出了一個使用 TARS 的 HTTP、TCP 與 PB 在內的多種 Server 類型的彈幕服務,存儲也涉及到了 Redis 和 MySQL,可讓開發者更容易在本身的項目裏把 TARS 跑起來。
TARS-PHP 的開源之路剛剛起步,爲了解決文檔問題,咱們也不斷地完善現有的 Gitbook,下降開發者的使用門檻。
在 TARS-PHP 開源一年左右的時間裏,咱們的項目與衍生項目數超過了 10 個、GitHub repo commit 數量超過 200 次、微信與 QQ 羣累計開發者社羣人數 800+、Packagelist 下載量 4萬+。但願你們也可以加入 TARS-PHP 的建設。
原文來自:https://www.oschina.net/news/108987/tars-php-the-road
本文地址:https://www.linuxprobe.com/tars-php-road.html編輯:何雲豔,審覈員:逄增寶