Multiprocessing und Multithreading in Node.js 14.05.2021, 11:00 Uhr

Komplexe Operationen

Mit Hilfe von Multiprocessing und Multithreading lassen sich Aufgaben parallelisieren.
Wenn es um die Berechnung komplexer Operationen geht, führte man diese in Node.js besser abseits des Haupt-Prozesses in Unterprozessen aus (Multiprocessing). Über die relativ neue Worker Thread API, die mittlerweile aus dem experimentellen Status aufgestiegen und stable ist, lassen sich solche Berechnungen sogar im gleichen Prozess in separaten Threads ausführen (Multithreading). Im Folgenden soll auf beide Varianten eingegangen werden und gezeigt werden, wie sich ein Webservice für den parallelen Zugriff optimieren lässt.
Das Ausgangsbeispiel, anhand dessen im Folgenden die Vorteile Multiprocessing und Multithreading gegenüber Single-Processing beziehungsweise Single-Threading vorgestellt werden sollen, ist im folgenden Listing gezeigt:


const http = require('http');

const url = require('url');

const server = http.createServer();

 

const sum = (n) => {

  let sum = 0;

  for (let i = 0; i < n; i++) {

    sum += i;

  }

  return sum;

};

 

server.on('request', (request, response) => {

  const parts = url.parse(request.url, true);

  if (parts.pathname === '/sum') {

    const query = parts.query;

    const n = parseInt(query.n);



    // Berechnung der Summe --> Flaschenhals!

    const result = sum(n);

    response.end(`Sum is ${result}`);

  } else {

    response.end('ok');

  }

});

server.listen(3000);

 

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar