Node.js: Kodo vykdymas keliuose CPU branduoliuose

Ši dokumentacija yra Pradžia vadovo dalis. Visą vadovą rasite čia: Sužinokite, kaip greitai ir saugiai diegti Node.js paslaugą Stackhero platformoje.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Node.js cloud aplinką, sukurtą tam, kad galėtumėte dirbti greičiau:

  • Diekite į produkciją per kelias sekundes naudodami paprastą git push. Jokių papildomų įrankių ar rankinio konfigūravimo nereikia.
  • Naudokite savo domeną ir gaukite automatinius HTTPS sertifikatus, užtikrinančius jūsų aplikacijos saugumą be papildomų nustatymų.
  • Automatinės atsarginės kopijos, atnaujinimai vienu paspaudimu ir prognozuojama kainodara leidžia jums susitelkti į funkcionalumo kūrimą, o Stackhero pasirūpina infrastruktūra už jus.
  • Visa tai veikia privačioje, dedikuotoje infrastruktūroje, užtikrinančioje stabilų našumą ir aukštą saugumo lygį.

Taupykite laiką ir mažinkite operacinę naštą: savo aplikaciją Stackhero Node.js cloud hosting platformoje galite paleisti vos per kelias minutes.

Pagal nutylėjimą Node.js naudoja vieną branduolį ir vieną giją. Norėdami išnaudoti visus CPU branduolius, galite naudoti Node.js cluster API. Oficialią dokumentaciją rasite čia: https://nodejs.org/api/cluster.html.

Štai paprastas pavyzdys, kuris sukuria HTTP serverį, naudojantį visus prieinamus CPU:

const cluster = require('cluster');
const http = require('http');
const cpusCount = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers
  for (let i = 0; i < cpusCount; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // Workers dalinasi bet kokiu TCP ryšiu, šiuo atveju – HTTP serveriu
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}