Mix PHP V2.2 發布,與 go-micro 深度集成的 PHP 微服務開發框架

2020-12-14 開源中國

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 的連接池為內置,使用更加簡單

相關焦點

  • polarphp 0.0.1 alpha 發布:全新 PHP 運行時環境
    在設計上參考Java的JDK的模塊組織風格,為PHP提供一套嚴謹並且功能強大的運行時標準庫,讓實現服務端高效編程成為可能,比如使用PHP實現類似Netty那樣的事件驅動的網絡框架,或者CoreDNS那樣的應用項目成為可能。同時也可以讓開發終端程序比如npm,Cargo和PM2等等類似的程序更加便捷。
  • PHP開發必備 一步步學PHP模版引擎Dwoo
    在PHP的開發當中,開發者都很關心的一個問題是,如何最大程度地將頁面和商業邏輯分離。而目前的很多PHP的開發框架,在這方面都有很好的解決方案,比如Zend,Agavi,CakePHP和CodeIgniter。然而,假如你的項目不是太大而沒使用這些框架時,則可以選用一些開源的PHP模版引擎來實現頁面和邏輯的分離,目前比較著名的有Smarty。
  • PHP開發必備 PHP模版引擎Dwoo深入學習
    【IT168 專稿】在上一篇關於Dwoo的教程中(PHP開發必備 一步步學PHP模版引擎Dwoo),我們討論了Dwoo中的基本用法。在本文中,我們將進一步講解在Dwoo中的一些高級用法,比如插件機制的編寫以及如何跟常見的PHP框架整合。
  • PHP單元測試利器:PHPUNIT深入用法(二)
    【IT168 技術】在上一篇PHP單元測試利器:PHPUNIT初探文章中,我們對phpunit有了一個初步的認識,在本文中將繼續深入講解下phpunit中的一些用法。
  • 盤點php的gui圖形界面開發擴展庫
    我們都知道php的底層是c語言實現的,並且它的擴展也是使用c語言來開發的,而且它的大部分功能都是通過擴展來實現的,因此,它也是可以通過擴展庫來實現圖形界面開發的,今天,我們就來盤點php開發圖形界面的擴展庫。
  • PHP日誌擴展 SeasLog-1.4.2 發布,支持錯誤與異常
    SeasLog-1.4.2 發布! SeasLog是一個輕量,高效,便捷,規範的PHP日誌擴展,精準的定位\精巧的設計,使它在PHP項目中逐步成為一個非常優秀的日誌工具.
  • PHP密碼加密機制(password_hash)(bcrypt 算法)
    php/** * 在這個案例裡,我們為 BCRYPT 增加 cost 到 12。 * 注意,我們已經切換到了,將始終產生 60 個字符。php/** * 注意,這裡的鹽值是隨機產生的。 * 永遠都不要使用固定鹽值,或者不是隨機生成的鹽值。
  • Go 和 PHP 在運行的時候有什麼區別和優勢?
    Process Manager)】(IIS ISAPI 或 Apache Module);(2)、FastCGI 進程管理器自身初始化,啟動多個 CGI 解釋器進程 (在任務管理器中可見多個 php-cgi.exe) 並等待來自 Web Server 的連接。
  • Service Mesh:調度千軍萬馬微服務,2.0妥妥的
    有關資料顯示,Conduit,也是該領域另一位頗具影響力的選手,多年前已成功合併到Linkerd項目,並在2018年7月發布為Linkerd 2.0 版本。App Mesh 作為 AWS 推出的 AWS 原生服務網格,與 AWS 完全集成,主要組件包括:網絡(AWS cloud map);計算(Amazon EC2 和 AWS Fargate)以及編排工具(AWS EKS,Amazon ECS 和 EC2 上客戶管理的 k8s)。
  • go-zero 1.1.2 發布,web 和 rpc 框架
    go-zero 1.1.2 發布了。go-zero 是一個集成了各種工程實踐的 web 和 rpc 框架。通過彈性設計保障了大並發服務端的穩定性,經受了充分的實戰檢驗。
  • OpenCenter Beta2 發布,php開源用戶管理系統
    讓php開發人員只需專注業務模塊的開發,從用戶和後臺管理中解放出來。
  • 熱門的13個Java微服務框架
    這也是許多負責構建微服務的開發者都非常喜歡Spring Boot的原因。使用 Spring 開發微服務遵循與 Web 應用相同的 MVC 理念。該框架享有多年Java開發中建立的所有深度連接,包括所有主要和次要數據存儲、LDAP伺服器和Apache Kafka等消息傳遞工具的集成。
  • PHP 7.4.0 發布 支持類型聲明
    PHP 7.4.0 發布了,此版本標誌著 PHP 7 系列的第四次特性更新。PHP 7.4.0 進行了許多改進,並帶來了一些新特性,包括:Typed Properties  類型屬性類屬性現在支持類型聲明,以下示例將強制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。
  • window下安裝apache php8
    下載redis 5.3.2,還沒有支持php8,所以暫時先了解[點擊下載地址[(https://windows.php.net/downloads/pecl/releases/redis/5.3.2/)選擇我們對於的安全和非線程版本,我們這 ts 和x64,x64 表示64位 ,例如我下載版本是:php_redis-5.3.2-7.4-ts-vc15-x86.zip
  • MiniFramework 2.6.0 發布,PHP 開源框架
    MiniFramework 是一款遵循 Apache2 開源協議發布的,支持 MVC 和 RESTful 的超輕量級 PHP 開發框架,在滿足開發者最基礎的 MVC 分層開發、資料庫和緩存訪問等少量功能基礎上
  • c語言和PHP,學哪個好?
    計科專業從事嵌入式開發多年,從現在的市場行情以及就業的機會上講php的就業空間還是大於C語言,但並不意味著C語言就已經被淘汰掉了,相反因為高級語言在應用領域使用的範圍比較廣泛,倒是顯得很多底層的程式語言成了稀缺的物種,畢竟對於底層的維護也是一項很重要的工作,況且C語言的使用範圍並不是很狹窄
  • php反序列化漏洞
    s:4:"blog";s:23:"https://lmg66.github.io";}';echo $Lmg2."\n";print_r($lmg1);print_r(unserialize($Lmg2));?
  • php中Generator(生成器)的執行過程
    說到php中的Generator(生成器),有人可能會想到協程,這裡我們先不說php如何實現協程,我們探究下Generator的執行過程。Generator是通過yield實現,yield 關鍵字是php5.5版本推出的一個特性。 首先,看下面的代碼:<?
  • 網站安全公司 修復PHP反序列化漏洞
    php的反序列化漏洞,php的盲點,也是一個常見的漏洞,這種漏洞充滿了一些場景,雖然有些很難調用,但是成功的後果很危險。漏洞形成的根本原因是沒有序列識別程序,從而導致序列字符串的檢測。反序列化漏洞不僅僅存在於php中,而且還存在於java、python中。基本上是一樣的原理。
  • php中函數禁用繞過的原理與利用
    ;var_dump(scandir("/"));//array(5) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(10) "index.html" [3]=> string(23) "index.nginx-debian.html" [4]=> string(11) "phpinfo.php" } bool