Sobes.tech
Junior — Middle

Hoe kan je werken met meerdere threads of processen in Node.js om de prestaties te verbeteren?

sobes.tech AI

Antwoord van AI

In Node.js kunnen verschillende benaderingen worden gebruikt voor werken met meerdere threads of processen:

  1. Module cluster — maakt het mogelijk om meerdere worker-processen te creëren die verzoeken parallel kunnen verwerken, gebruikmakend van alle CPU-kernen. Elke worker is een apart proces met zijn eigen event loop.
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
} else {
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hallo van worker ' + process.pid);
  }).listen(8000);
}
  1. Worker Threads (worker_threads) — maken het mogelijk om threads binnen één proces te creëren die CPU-intensieve taken parallel kunnen uitvoeren zonder de hoofd event loop te blokkeren.
const { Worker } = require('worker_threads');

const worker = new Worker(`
  const { parentPort } = require('worker_threads');
  parentPort.postMessage('Hallo van worker thread');
`, { eval: true });

worker.on('message', message => console.log(message));
  1. Externe processen (child_process) — kunnen worden gestart en communiceren via IPC.

De keuze hangt af van de taak: voor het schalen van servers is cluster beter, voor berekeningen worker_threads.