Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我可以让HTTP服务器在共享套接字上侦听,从而不允许停机代码升级吗?_Node.js - Fatal编程技术网

Node.js 我可以让HTTP服务器在共享套接字上侦听,从而不允许停机代码升级吗?

Node.js 我可以让HTTP服务器在共享套接字上侦听,从而不允许停机代码升级吗?,node.js,Node.js,我希望能够在代码更新后不停机地终止旧进程 在Ruby中,我使用Unicorn来实现这一点。当您向Unicorn主进程发送一个USR1 kill信号时,它会生成自身的一个新副本,这意味着所有库都会再次从文件中加载。当麒麟主机加载了它的库并且它的工作进程准备好处理请求时,有一个回调可用;然后,您可以将代码放在这里,通过PID杀死旧主机。然后,旧主机将系统性地关闭其工作进程,等待它们完成任何当前请求。这意味着您可以在不删除单个请求的情况下部署代码更新,停机时间为0 是否可以在节点中执行此操作?似乎有很

我希望能够在代码更新后不停机地终止旧进程

在Ruby中,我使用Unicorn来实现这一点。当您向Unicorn主进程发送一个USR1 kill信号时,它会生成自身的一个新副本,这意味着所有库都会再次从文件中加载。当麒麟主机加载了它的库并且它的工作进程准备好处理请求时,有一个回调可用;然后,您可以将代码放在这里,通过PID杀死旧主机。然后,旧主机将系统性地关闭其工作进程,等待它们完成任何当前请求。这意味着您可以在不删除单个请求的情况下部署代码更新,停机时间为0


是否可以在节点中执行此操作?似乎有很多库模糊地处理这类事情——框架似乎只是在崩溃后无意识地重新启动流程,诸如此类的事情——但我找不到这种基本模式的精简实现。如果可能的话,我想自己去做,这不会那么难-我只需要能够做http.createServer().listen()并指定一个套接字文件(我将配置nginx向其发送请求),而不是端口。

无论是
net
模块还是
http
模块都有
listen
的版本,这些版本都会获取到套接字的路径,并在服务器绑定后启动回调

此外,您还可以使用新的
子进程.fork
启动新的节点进程。这个新进程在其父进程中内置了一个通信通道,因此可以很容易地告诉其父进程在初始化后退出


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

谢谢!是的,我已经实现了与主进程对话的工作进程(使用集群模块),但还没有找到重新加载代码的方法。这真是我心中的负担;我知道node.js目前非常关注跨平台,但遗憾的是,没有更多的关注如何轻松地使用共享套接字。