重磅丨科技教育公司“好未来”正式对外开源高性能PHP框架Fend

好未来是一家以智慧教育和开放平台为主体,以素质教育和课外辅导为载体,在全球范围内服务公办教育,助力民办教育,探索未来教育新模式的科技教育公司。

截至目前,好未来集团已围绕教育场景需求,累计研发包括图像、语音、数据挖掘、自然语言处理等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篇)

阅读 3.8k

推荐阅读
好未来技术团队
用户专栏

好未来(TAL)是一个以智慧教育和开放平台为主体,以素质教育和课外辅导为载体,在全球范围内服务公办教...

1075 人关注
29 篇文章
专栏主页