我正在努力在我正在开发的项目中启用群集支持。这个问题直接来自集群模块上Nodejs文档中的声明:
来自:https://nodejs.org/api/cluster.html#cluster_cluster
请注意,在Windows上,尚无法在工作程序中设置命名管道服务器。
从文档以及我所做的其他研究来看,这个限制的实际实际后果对我来说并不清楚。
答案 0 :(得分:2)
进程可以公开命名管道作为与其他感兴趣方进行通信的方式 - 即。一个nginx服务器可以公开一个命名管道,其中所有传入的请求都将被发送(只是一个想法 - 我不确定nginx是否可以这样做)。
从Node.js进程(不是集群工作者),然后你可以启动一个http服务器(甚至是普通的TCP服务器)来监听发送到这个命名管道的消息:
http.createServer().listen('\\.\pipe\nginx')
.listen()
方法签名are here的文档,特别是此部分感兴趣:
启动服务器,侦听已绑定到端口,UNIX域套接字或 Windows命名管道的给定句柄的连接
但是,根据警告,群集工作人员无法使用此功能,原因超出我的理解。
Node.js中的Here is a relevant commit暗示了这个限制。您可以通过打开群集的Markdown文档找到它,查看git blame并进一步了解历史记录,直到您到达提交此笔记的提交。
正常的进程间通信不受此限制的影响,因此集群在Win32上的工作方式与在Unix系统上的工作方式相同。
注意:经过深思,这个nginx示例有点误导,因为根据我的理解,命名管道不能用于有状态双向通信。它只是单向的,即。源 - >监听器。但我希望我传达了限制背后的一般想法。