据我所知,Node.js服务器基本上是一个JavaScript文件,由node
可执行文件运行。是否可以在不停止请求处理的情况下更新此文件?
我想必须为此停止节点可执行文件,所以我认为我应该使用反向代理。例如:
这是一种有效的方法吗?如何在多台服务器计算机上自动完成此类版本更新(可从同一LAN访问)?
答案 0 :(得分:10)
一个不同的"纯节点"解决方案是使用内置的cluster模块:
您的代码作为一个集群客户端(众多)运行。集群服务器进程绑定到端口,并在客户端之间进行自动负载平衡。当您更改了代码后,您可以向群集服务器发送信号,它将正常地重新启动您的客户端,而不会丢弃任何现有连接。
以下是一些可以为您执行集群服务器管理的项目:
优点:
答案 1 :(得分:5)
基本上,您可以(应该)做的是:
当您需要更新系统时,请关闭其中一个Node.js实例,更新它并重新启动它。然后对另一个做同样的事。
基本上,这应该这样做。
缺点是你可能会在很短的时间内同时运行不同版本的应用程序,而你的数据库(例如)需要能够赶上这个。