Mix PHP 是一個基于 Swoole 開發的高性能 PHP 架構,從 2017 年開始經過多年發展收獲了很多中小型團隊的支援,架構版本也經曆了多個版本的疊代:
- V1.*:基于 Swoole 的常駐記憶體型 PHP 高性能架構
- V2.0:基于 Swoole 的 FastCGI、常駐記憶體、協程三模 PHP 高性能架構
- V2.1:基于 Swoole 4.4+ 單線程協程 PHP 架構
- V2.2:基于 Swoole 4.4+ 單線程協程 PHP 微服務架構
微服務開發
本次版本更新主要是增加微服務開發相關的元件與開發骨架,從上一次 Mix V2.1 非常激進的切換為單線程協程後 [為何從 Reactor+Manager+Worker 多程序改為單線程協程],Mix V2.2 在微服務方面也非常激進的選擇了和其他 Swoole 架構截然不同的路徑:
與 go-micro 微服務生态深度內建,借用 golang 微服務生态的治理工具Mix Micro
在很多 Swoole 架構自建微服務生态的時候,我認為微服務生态要是能與主流生态直接無縫通信可能更具有實用價值,Mix 從 V2.1 開始完全切換為單線程協程,這一特性非常适合微服務的打造,同時 Mix 一直都是 Go 風格架構,是以我決定将微服務融入 go-micro 生态,讓 Mix 架構使用者能與 go-micro 編寫的微服務直接代碼級無縫通信,并且能直接使用 go-micro 運作時工具包的網關、代理、Dashboard 等全部微服務治理基礎設施,讓 PHP 與 Go 能一起開發高性能微服務,取長補短。
- Mix Micro:動态語言,開發效率高,view 模闆渲染更加适合,單線程協程沒有鎖的煩惱,try/catch 不用忍受 go 大量 err 處理的煩惱,更加完善的 OOP 讓業務封裝更加人性。
- Go Micro:靜态語言,編譯時即可過濾大量代碼問題,CPU 密集型計算更加擅長,原生的協程庫生态更加豐富。
基于以上 Mix 打造了可獨立使用的 Mix Micro 同時還提供了包含大量代碼的 Mix Micro Skeleton 微服務開發骨架。
Mix gRPC
在 gRPC 方面,由于 phpgrpc 官方的局限性導緻 PHP 在 gRPC 中一直都是充當 Client 的角色,Mix gRPC 試圖改變這一現狀,我們提供了 grpc 官方類似的 protoc 插件,能根據 .proto 直接生成基于 Swoole 的 PHP gRPC Server/Client 代碼 (官方隻能生成 Client 代碼,并且不支援協程),使 PHP 與 go-micro 具有同樣的微服務程式設計體驗。
- Mix gRPC:基于 Swoole 協程的 gRPC 類庫,包含 protoc 代碼生成器、伺服器、用戶端
更新詳情
Added
- 增加 mix/micro 與 go-micro 生态深度內建的 php 微服務開發架構
- 增加 mix/grpc 類庫,包含 protoc 代碼生成器、伺服器、用戶端
- 增加 mix/tracing、mix/tracing-zipkin 符合 opentracing 标準的調用鍊追蹤庫
- 增加 mix/micro-hystrix 微服務熔斷器
- 增加 mix/micro-etcd 基于 Etcd 的服務注冊中心、配置中心
- 增加 mix/monolog 取代之前自主研發的日志庫,并擴充了控制台列印的功能
Improved
- 強化 mix/json-rpc 支援微服務調用
- 修改 mix/database、mix/redis、mix/sync-invoke 的連接配接池為内置,使用更加簡單