node.js集群模块如何允许多个子进程在同一端口上侦听?

编程入门 行业动态 更新时间:2024-10-25 12:22:43

node.js集群模块如何允许<a href=https://www.elefans.com/category/jswz/34/1771377.html style=多个子进程在同一端口上侦听?"/>

node.js集群模块如何允许多个子进程在同一端口上侦听?

使用Node.JS和cluster模块。

我试图了解多个分支的子进程如何在同一个端口上进行侦听。

例如,使用cluster模块,我们可以这样做:

const port = 443;
...
if (cluster.isMaster) {
    for(let i = 0; i < numCPUs; i++)
    {
        cluster.fork();
    }
...
}
else // Forked child processes:
{
... 
    https.createServer({
        key: fs.readFileSync('server.key'),
        cert: fs.readFileSync('server.cert')
    }, app)
    .listen(port, () => {
        console.log(`HTTPS Listening on port ${port}`);
    });

}

此代码分叉多个进程,所有这些进程均在同一端口上调用listen。我不清楚所有进程如何绑定同一端口,仍然能够确定哪个进程获取端口流量。这实际上是一种错觉,而是主进程实际上是绑定端口并将请求随机传递给派生子进程的唯一进程吗? (如果是这种情况,会不会影响性能?)

感谢您帮助我了解所有子进程如何可以同时在同一端口上侦听。

请注意,此示例正在Windows机器上运行,但是如果我理解正确,它与Windows和Linux都兼容。

回答如下:

从文档Cluster: How It Works:

集群模块支持两种分配传入数据的方法连接。

第一个(在Windows以外的所有平台上都是默认的,是循环方法,其中主进程侦听端口,接受新的连接,然后将它们分配给所有工人以循环方式,以及一些内置的智能以避免使工作进程超载。

第二种方法是主进程创建监听的地方套接字并将其发送给感兴趣的工作人员。工人然后接受直接进入连接。

“顶级”过程是绑定端口的过程。 IPC通道自动分配给子进程。 “工作人员可以共享TCP连接”。

更多推荐

node.js集群模块如何允许多个子进程在同一端口上侦听?

本文发布于:2024-05-06 22:54:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753924.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   集群   端口   模块   进程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!