Laravel Octane:基于 Swoole/RoadRunner 驱动的高性能 Laravel 解决方案


今天,Taylor Otwell 让 Laracon Online 2021 的与会者第一次看到了 Laravel Octane —— 一个基于 SwooleRoadRunner 等环境运行高性能 Laravel 应用的官方扩展包。

Swoole 想必都很熟悉了,大家对 RoadRunner 可能有点陌生,这是一个基于 Golang 编写的高性能 PHP 应用服务器、负载均衡器和进程管理器。

在一个 hello world 的演示示例中,Octane 通过四个并发线程,在大约 50 个并发请求的负载下,每秒能处理 6000 多个请求,同等条件下,传统 Laravel 应用每秒只能处理几百个请求:

下面是演示过程中使用的基准测试命令:

wrk -t4 -c50 http://localhost:8000/hello-world

Octane 是如何工作的?

Octane 可以通过 Artisan 命令 octane:start 启动,它将运行基于 Swoole 或 RoadRunner 的 HTTP 服务器。你可以根据自己环境的 CPU 线程指定使用哪种技术以及运行多少线程:

artisan octane:start --workers=8 --server=roadrunner

Swoole 和 RoadRunner 都使用了协程(coroutines),因此可以根据 CPU 核数 fork 出多个 worker 进程,这些 PHP worker 进程可以在多个用户请求之间保持 active 状态(你可以通过 Artisan 命令参数标记在 x 次请求后重启),并随时准备接收新的请求,从而让 PHP 程序运行更加高效。

另外,使用 Swoole/RoadRunner 还可以通过常驻内存的方式提高应用程序的启动效率,一改传统 PHP Web 应用每次用户请求需要重新启动 Laravel 框架,消除框架启动时间对应用程序的性能有很大影响,再加上 PHP OPcache 通过在共享内存中缓存字节码来减少运行时开销,可谓如虎添翼。

为什么开发 Octane?

一般的应用程序可能不需要我们在前面 Octane 的演示中所看到的那种 RPS(每秒请求数) 级别。不过,随着业务和系统的增长,对高可用高性能 PHP 应用的需求会越来越迫切,Laravel 在保证框架级代码与 Swoole 和 Octane 等工具无缝对接方面有着独特的优势。

Laravel 对这些技术的官方支持将是现代 PHP 应用扩展方式的重大突破,整个 PHP 生态系统将从这些努力中受益。

不过,目前 Laravel Octane 尚未正式发布,所以还需要等几周时间才能体验,Laravel 学院会持续关注,并在第一时间提供使用教程,敬请关注学院最新动态。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Leetcode PHP题解--D134 14. Longest Common Prefix

>> 下一篇: 基于 RoadRunner 驱动 Laravel Octane 构建高性能 Laravel 应用