📜  集群模块如何工作?

📅  最后修改于: 2022-05-13 01:56:51.022000             🧑  作者: Mango

集群模块如何工作?

在本文中,我们将了解什么是集群模块以及它在 node.js 中是如何工作的。让我们开始吧。

Node.js 是使用 javascript 作为其脚本语言的单线程机器。由于 node.js 中的单个线程,它更有效地处理内存,因为没有多个线程,因此不需要线程管理。现在,为了有效地处理工作负载并利用计算机多核系统,创建了集群模块,为我们提供了使子进程与单个父进程同时运行的方法。每个子进程(更具体地说是工作进程)都有自己的事件循环、内存、V8 实例,并共享相同的服务器端口。

语法:以下是在节点应用程序中包含集群模块的语法。

const cluster=require('cluster');

例子:

Javascript
const cluster=require("cluster");
const express=require("express");
const app=express();
const total_cpus=require("os").cpus().length;
  
if(cluster.isMaster){
    console.log(`Master process ${process.pid} is running`);
      
    // Fork child processes(workers)
    for(let i=0;i{
       console.log(`Worker process ${worker.process.pid} died`);
    });
} else {
    console.log(`Worker process ${process.pid} started running`);
      
    const port=2323;
    app.listen(port,(req,res)=>{
      console.log(`server running at port ${port}`);
    });
}


输出:

Master process 2836 is running
Worker process 6272 started running
Worker process 13128 started running
Worker process 13480 started running
server running at port 2323
server running at port 2323
server running at port 2323
Worker process 11172 started running
server running at port 2323

说明:在上面的演示中,当应用程序运行时,首先我们使用cluster.isMaster检查进程是否是主进程。如果进程是主进程,我们将使用cluster.fork()方法生成多个工作进程。 Worker 和 Process Id 被记录到控制台。

以下是一些集群属性和方法-

  • fork() :这会从 master 创建一个新的子进程。
  • isMaster :如果当前进程是主进程,则返回 true,否则返回 false。
  • isWorker :如果当前进程是worker,则返回true,否则返回false。
  • process :这将返回全局的子进程。
  • send() :这会将消息从worker发送到master,反之亦然。
  • kill() :这是用来杀死当前工作人员的。
  • isDead :如果当前工作人员死亡,则返回 true,否则返回 false。
  • id :这是工人的唯一 ID。
  • settings :这将返回一个包含集群设置的对象。
  • worker :这将返回当前的工作进程。
  • workers :这将返回一个进程的所有工作人员。
  • isConnected :如果当前工作人员连接到其主服务器,则返回 true,否则返回 false。
  • disconnect() :这是断开所有工作人员的连接。

这完全是关于集群模块、它们的用途、实现和各种属性。