项目

通用

个人资料

操作

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 协作
    如果由 Web 服务器决定,
    • 编写 spawn-manager 更容易 :)
    • 开销更小
    • 该协议可以很容易地在以下场景中重用
      spawn-manager 生成一个 PHP 后端,该后端默认运行 1 个子进程,因此一次只能处理一个请求。
      如果需要另一个后端,spawn-manager 可以将此请求转发给 PHP 主进程,该主进程将派生另一个子进程;许多操作码缓存在此模式下表现最佳(一个主进程,一个共享缓存,多个子进程)——另一个主进程意味着另一个缓存。

    也许协议可以同时允许这两种模式?

  • Web 服务器应被允许重用先前接收到的后端地址,只要它不与 spawn manager 断开连接(或释放后端)。
  • spawn-manager 应支持为不同的系统用户生成进程;这需要以 root 权限运行 spawn-manager 并在其中实现一些安全检查。

我不认为需要身份验证/加密等功能;该协议应仅在受信任的网络上使用,或仅与 Unix 域套接字一起使用。

更新者 stbuehler 近 13 年前 · 3 次修订