我可以使HTTP服务器在共享套接字上侦听,以允许不停机代码升级?

我希望能够在代码更新之后杀死我的旧进程,而不会造成任何停机。

在Ruby中,我使用Unicorn来做这件事。 当你发送一个USR1杀死信号的Unicorn主进程时,它会产生一个新的副本,这意味着所有的库都会从文件中重新加载。 有一个callback可用时,一个独angular兽主已加载其库和其工作进程已准备好处理请求; 然后你可以把代码放在这里通过它的PID来杀死老主人。 老主人将系统地closures其工作进程,等待他们结束任何目前的要求。 这意味着您可以部署代码更新而不丢失单个请求,停机时间为0。

是否有可能在Node中做到这一点? 看起来似乎有很多类似于这样的事情的库 – 在崩溃之后似乎只是无意识地重启进程的框架,以及类似的东西 – 但是我找不到任何简化的实现这个基本模式。 如果可能的话,我想自己做,它不会那么辛苦 – 我只需要能够做http.createServer()。listen()并指定一个套接字文件(我将configurationnginx发送请求到),而不是一个端口。

nethttp模块都有listen版本,这些版本会向套接字发送path,并在服务器绑定后触发callback。

此外,您可以使用新的child_process.fork来启动新的Node进程。 这个新进程有一个内置于其父进程的通信通道,所以一旦初始化就可以很容易地告诉父进程退出。

  • net文档
  • http文档
  • child_process.fork文档

(对于前两个链接,请看链接到的方法,因为它们都是相同的方法名称。)