什么是 Rapira
Rapira 是一个用 Rust 编写的 PHP 应用服务器。
RoadRunner 维护者设计并开发 Rapira。Rapira 在服务器进程中直接调用 PHP。
Rapira 支持 HTTP 和 gRPC。每种协议都有自己的监听器和 PHP worker 进程池。
博客包含项目更新。
HTTP
Rapira 包含一个使用 hyper 库的 HTTP 服务器。它接受明文 HTTP/1.1 和 HTTP/1.0 连接。Rapira 不终结 TLS。TLS 终止代理接受客户端的 HTTPS,解密连接,然后向 Rapira 发送明文 HTTP。代理配置见生产环境部署。
Rapira 支持三种 PHP 执行模式:
- Classic:Rapira 为每个请求初始化应用,行为与 php-fpm 相同。
- Worker:Rapira 初始化应用一次。循环处理请求,Rapira 为每个请求重新填充 PHP 超全局变量。
- Dispatcher:Rapira 初始化应用一次。脚本通过 API 调用获取请求对象。每个 worker 一次处理一个请求。
执行模式页面介绍模式行为和选择标准。
gRPC
Rapira 在一个监听器上处理一元 gRPC、gRPC-Web 和 Connect 调用。PHP 应用通过 dispatcher 接收并返回二进制 protobuf 消息。master 在 worker 启动前从描述符集加载服务模式定义。
gRPC 进程池使用 Dispatcher 模式。HTTP 和 gRPC 可以使用不同的入口脚本同时运行。完整的服务、protobuf 类生成和客户端命令请参阅 gRPC。
指标和健康检查
可选的 [observability] 表会再启动一个进程,该进程不运行 PHP。[observability.metrics] 子表在 /metrics 上启用 Prometheus 指标。[observability.probes] 子表启用 /livez 和 /readyz 探针。配置和端点请参阅指标和健康检查。