Node.js 集群模块的工作原理是什么

Node.js 集群模块的工作原理是什么

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

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

语法: 以下是在你的node应用程序中引入集群模块的语法。

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<total_cpus;i++){ 
       cluster.fork(); 
    } 
      
    cluster.on("exit",(worker,code,signal)=>{ 
       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}`); 
    }); 
}
JavaScript

输出结果:

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
JavaScript

解释: 在上面的演示中,当应用程序运行时,首先我们检查进程是否为主进程,使用 cluster.isMaster 方法。如果进程是主进程,我们会使用 cluster.fork() 方法生成多个工作进程。工作进程的ID会被记录在控制台中。

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

  • fork() :从主进程创建一个新的子进程。
  • isMaster :如果当前进程是主进程则返回true,否则返回false。
  • isWorker :如果当前进程是工作进程则返回true,否则返回false。
  • process :返回全局的子进程。
  • send() :从工作进程发送消息到主进程,或从主进程发送消息到工作进程。
  • kill() :用于终止当前工作进程。
  • isDead :如果当前工作进程已经结束则返回true,否则返回false。
  • id :工作进程的唯一ID。
  • settings :返回包含集群设置的对象。
  • worker :返回当前工作进程。
  • workers :返回该进程的所有工作进程。
  • isConnected :如果当前工作进程与其主进程连接则返回true,否则返回false。
  • disconnect() :断开所有工作进程的连接。

这是关于集群模块的全部内容,包括它们的用途、实现和不同的属性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册