En este artículo, aprenderemos qué son los módulos de clúster y cómo funcionan en node.js. Empecemos.
Node.js es una máquina de un solo subproceso que utiliza javascript como lenguaje de secuencias de comandos. Debido a un solo subproceso en node.js, maneja la memoria de manera más eficiente porque no hay múltiples subprocesos por lo que no se necesita administración de subprocesos. Ahora, para manejar la carga de trabajo de manera eficiente y aprovechar los sistemas informáticos de múltiples núcleos, se crean módulos de clúster que nos brindan la forma de hacer que los procesos secundarios se ejecuten simultáneamente con un único proceso principal. Cada proceso secundario (más específicamente, el proceso de trabajo) tiene su propio bucle de eventos, memoria, instancia V8 y comparte el mismo puerto de servidor.
Sintaxis: a continuación se muestra la sintaxis para incluir el módulo de clúster en su aplicación de Node.
const cluster=require('cluster');
Ejemplo:
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}`); }); }
Producción:
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
Explicación: en la demostración anterior, cuando se ejecuta la aplicación, primero verificamos si el proceso es un proceso maestro mediante cluster.isMaster . Si el proceso es maestro, generaremos varios procesos de trabajo utilizando el método cluster.fork() . Los ID del trabajador y del proceso se registran en la consola.
A continuación se muestran algunas de las propiedades y métodos del clúster:
- fork() : Esto crea un nuevo proceso secundario desde el maestro.
- isMaster : Esto devuelve verdadero si el proceso actual es maestro o falso.
- isWorker : Esto devuelve verdadero si el proceso actual es trabajador o falso.
- proceso : Esto devuelve el proceso hijo que es global.
- send() : Esto envía un mensaje del trabajador al maestro o viceversa.
- kill() : Esto se usa para matar al trabajador actual.
- isDead : Esto devuelve verdadero si el trabajador actual está muerto o falso.
- id : esta es una identificación única para el trabajador.
- settings : Esto devuelve un objeto que contiene la configuración del clúster.
- trabajador : Esto devuelve el proceso de trabajo actual.
- trabajadores : Esto devuelve todos los trabajadores de un proceso.
- isConnected : Esto devuelve verdadero si un trabajador actual está conectado a su maestro o falso.
- desconectar() : Esto es para desconectar a todos los trabajadores.
Esto fue todo sobre módulos de clúster, sus usos, implementación y varias propiedades.
Publicación traducida automáticamente
Artículo escrito por nirmitsawhney01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA