Как работает кластерный модуль?

Выделение не влияет на производительность кода, но облегчает жизнь разработчикам Изучение

В этой статье мы узнаем, что такое кластерные модули и как они работают в 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<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}`);
    });
}

Выход:

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(). Идентификаторы рабочего процесса и процесса регистрируются в консоли.

Ниже приведены некоторые свойства и методы кластера.

  • fork(): создает новый дочерний процесс от главного.
  • isMaster: возвращает true, если текущий процесс является ведущим, или false.
  • isWorker: возвращает true, если текущий процесс является рабочим, или false.
  • process: возвращает дочерний процесс, который является глобальным.
  • send(): отправляет сообщение от работника к мастеру или наоборот.
  • kill(): используется для уничтожения текущего работника.
  • isDead: возвращает true, если текущий рабочий мертв, или false.
  • id: это уникальный идентификатор работника.
  • settings: возвращает объект, содержащий настройки кластера.
  • worker: возвращает текущий рабочий процесс.
  • workers: возвращает всех рабочих процесса.
  • isConnected: возвращает true, если текущий рабочий процесс подключен к своему мастеру, или false.
  • disconnect(): это для отключения всех рабочих.
Читайте также:  6 лучших практик кодирования для начинающих программистов

Это было все о кластерных модулях, их использовании, реализации и различных свойствах.

Оцените статью
bestprogrammer.ru
Добавить комментарий

Adblock
detector