Node.JS教程63:零停机重启

一般情况下,当更新代码后,必须重启Node,才能使更新的代码功能生效。

重启当然是会令程序功能暂时中断的,虽然这个过程非常短,可能只有几秒。

普通的程序可能不需要但心这个问题,但如果是非常重要的程序,不允许间断的程序,又该如何?

使用集群(Cluster),用“零停机重启”方案,可以很简单的实现这个需求。

实现代码:


代码解析:

集群主进程用express提供web服务;

集群工作进程用http提供web服务;

当主进程收到指定消息时(代码中是访问restart路径),开始“零停机重启”操作。

实现重点是:停掉一个工作进程,并重启一个新的工作进程,当新的工作进程启动好,并进入监听状态时(即:可正常提供Web服务时),再重启下一个工作进程,直到全部重启完成。

执行效果:

为了更真观的展示“修改代码,重停机重启”效果,我们加一行代码:

先启动,再修改为:

再通过网页触发重启:

后台输出同样验证了修改后的代码已生效: