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

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

截至目前,好将来集团已围绕教育场景需求,累计研发包括图像、语音、数据挖掘、天然语言处理等8大类型、100多项AI能力,打造10余项教育场景应用AI解决方案。nginx

在技术不断提高的道路上,好将来技术线提出坚持“大中台、小前台”的技术战略,统一基础服务设施建设,推动公司技术组件落地,加强企业技术人才内生,不断提高企业的技术实力及技术影响力。git

除此以外,好将来内部坚持开源共享,经过“开放、共享、协力开发”的模式,推进开源文化氛围的造成与技术组织变革,为中台建设提供了另一种抓手。同时经过开源文化的建设,促进整个教育生态技术共享,提高教育科技实力,更好的为“科技与爱让教育更美好”的愿景奠基基础。github

近期由“好将来”技术团队开源的高性能PHP框架Fend PHP正式上线!该框架单机QPS可达到4000个,好将来内部目前超过30个团队项目在使用该PHP框架!服务器

前言

PHP是一款简单方便的语言,而行业开源框架为了后续灵活 而变得过于繁重微信

Fend框架是一款颇有历史的框架、初代发布后一直在好将来坊间传播使用、衍生出大量分支版本swoole

这是一款颇有意思的框架、普通的框架内隐藏着大型互联网经验的精华、也同时存在大量历史痕迹app

2019年7月 咱们对Fend进行整理、封装、推广、目前在好将来内部有大量的用户在使用、维护composer

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篇)

相关文章
相关标签/搜索