操作
Spawn-Manager-协议¶
如果能有一个 Web 服务器和“spawn-manager”之间的通用协议就太好了。
spawn-manager 的目的是按需生成后端(无论连接到后端使用的协议是什么——FastCGI、SCGI、HTTP 等)。
Phusion Passenger 就是一个例子——据我所知,其概念是 Web 服务器 (Apache) 连接到 spawn manager 以请求后端;spawn manager 将返回一个可用后端的套接字,Web 服务器连接该套接字来处理请求。
以下是一些关于如何设计这样一个协议的想法。
- 我认为有两种方式来控制所需的后端数量:要么由 Web 服务器决定,要么由 spawn-manager 决定。
如果由 spawn-manager 来决定,- Web 服务器必须定期向 spawn-manager 发送更新(开销?)
- 可以使用多个 Web 服务器与同一个 spawn-manager 协作
- 编写 spawn-manager 更容易 :)
- 开销更小
- 该协议可以很容易地在以下场景中重用
spawn-manager 生成一个 PHP 后端,该后端默认运行 1 个子进程,因此一次只能处理一个请求。
如果需要另一个后端,spawn-manager 可以将此请求转发给 PHP 主进程,该主进程将派生另一个子进程;许多操作码缓存在此模式下表现最佳(一个主进程,一个共享缓存,多个子进程)——另一个主进程意味着另一个缓存。
也许协议可以同时允许这两种模式?
- Web 服务器应被允许重用先前接收到的后端地址,只要它不与 spawn manager 断开连接(或释放后端)。
- spawn-manager 应支持为不同的系统用户生成进程;这需要以 root 权限运行 spawn-manager 并在其中实现一些安全检查。
我不认为需要身份验证/加密等功能;该协议应仅在受信任的网络上使用,或仅与 Unix 域套接字一起使用。