重磅丨科技教育公司“好未來”正式對外開源高效能PHP框架Fend

好未來技術團隊發表於2020-08-14

好未來是一家以智慧教育和開放平臺為主體,以素質教育和課外輔導為載體,在全球範圍內服務公辦教育,助力民辦教育,探索未來教育新模式的科技教育公司。

截至目前,好未來集團已圍繞教育場景需求,累計研發包括影像、語音、資料探勘、自然語言處理等8大型別、100多項AI能力,打造10餘項教育場景應用AI解決方案。

在技術不斷提升的道路上,好未來技術線提出堅持“大中臺、小前臺”的技術戰略,統一基礎服務設施建設,推進公司技術元件落地,增強企業技術人才內生,不斷提升企業的技術實力及技術影響力。

除此之外,好未來內部堅持開源共享,通過“開放、共享、合力開發”的模式,推動開源文化氛圍的形成與技術組織變革,為中颱建設提供了另外一種抓手。同時通過開源文化的建設,促進整個教育生態技術共享,提升教育科技實力,更好的為“科技與愛讓教育更美好”的願景奠定基礎。

近期由“好未來”技術團隊開源的高效能PHP框架Fend PHP正式上線!該框架單機QPS可達到4000個,好未來內部目前超過30個團隊專案在使用該PHP框架!

前言

PHP是一款簡單方便的語言,而行業開源框架為了後續靈活 而變得過於繁重

Fend框架是一款很有歷史的框架、初代釋出後一直在好未來坊間傳播使用、衍生出大量分支版本

這是一款很有意思的框架、普通的框架內隱藏著大型網際網路經驗的精華、也同時存在大量歷史痕跡

2019年7月 我們對Fend進行整理、封裝、推廣、目前在好未來內部有大量的使用者在使用、維護

2020年7月 開源、以此共建交流

我們崇尚 腳踏實地、仰望星空 精神 歡迎小夥伴一起參與開源共建

設計方向

Fend 框架是一款以企業快速實現業務為主要目標的框架,但與複雜的行業流行框架追求不同:

  • 簡單實用:追求快速上手,擴充套件功能一步到位、大量降低功能的複雜度、框架更注重簡單實用實現
  • 單層核心:追求一個函式能實現的功能絕不繼承封裝,不追求框架自身功能的繼承可複用
  • 內聚歸類:高度集中歸類功能,降低底層複雜度,減少底層元件關注度、更多時間在業務
  • 持續積累:持續積累大型網際網路線上運營經驗,持續探索企業實用技巧,深度來自於積累而非AOP帶來的靈活性
  • 核心設計:高內聚簡單核心,放開業務自封裝空間,留下更多空間給業務
  • 開源心態:開放公開,接受任何符合價值觀原始碼奉獻、但有嚴格程式碼稽核

功能簡介

  • Swoole/FPM 雙引擎平滑切換(協程版本還在整理稍晚放出)
  • 統一使用 Composer Autoload PSR4
  • 請求Debug 模式,請求網址wxdebug=1可檢視debug模式檢視異常分析效能
  • 協程模式下對變數域做了更好的封裝,降低協程使用難度
  • 支援壓測使用灰度影子庫
  • 高速map對映路由 + FastRouter正則路由
  • 符合大資料探勘設計的Trace日誌,方便ELK分析、ClickHouse、HBase、實時預警
  • throw new Exception方式處理業務異常、能夠快速發現異常

效能壓測

目前是在KVM虛擬機器上壓測、後續會找一臺阿里雲進行壓測

FPM效能

伺服器配置

  • CPU 4 核 Xeon 2.2
  • 記憶體 12G
  • KVM + CentOS 7.6
  • FPM 開啟程式數 500

QPS 5331 (分析:fpm空跑hello 1w、引入composer autoload 後 7000、開啟日誌trace 6000、框架內echo 5000)

Swoole 1.10.x 效能

伺服器配置

  • CPU 4 核 Xeon 2.2
  • 記憶體 12G
  • KVM + CentOS 7.6
  • FPM 開啟程式數 500

QPS 24000、協程版本稍晚放出

發行版本介紹

Fend有兩個版本

  • Tag版本為 1.2.x FPM/Swoole 1.10.x 平滑切換版本
  • Tag版本為 1.3.x FPM/Swoole 4.5.x Coroutine 協程 平滑切換版本 此版本還在調整

以下為1.2.x版本安裝

FPM Engine Start

master is 1.2.x version

composer create-project fend/fend-skeleton:~1.2.0 project_name
複製程式碼

Ref nginx.conf to configure Nginx and http://127.0.0.1/ on browser

Swoole Engine Start

composer create-project fend/fend-skeleton:~1.2.0 project_name

# swoole start ( /bin/fend depend on composer require symfony/console )
php /bin/fend Swoole -c app/Config/Swoole.php start
php /bin/start.php -c app/Config/Swoole.php start
複製程式碼

browser http://127.0.0.1:9572/

1.3.0協程版本 安裝

composer create-project fend/fend-skeleton:~1.3.0
複製程式碼

軟體作者貢獻列表

image

(其他貢獻者、請詳見文件鳴謝)

合作伙伴

好未來教育集團90%線上業務在使用本框架

  • xiaohouai.png

    xiaohouai.png

共建規則

歡迎挑戰元件功能、允許同類功能同時釋出競爭、以 效能好 + 實用及實現簡單 + 功能實用 評判

聯絡我們

issue: github.com/tal-tech/fe…

加群請加微信:

contactus.png

也許你還想看

DStack--基於flutter的混合開發框架

WebRTC原始碼分析——視訊流水線建立(上)

"考試"背後的科學:教育測量中的理論與模型(IRT篇)

相關文章