Mencipta Pengelompokan dalam Aplikasi Node.js

DDD
Lepaskan: 2024-11-02 09:37:02
asal
343 orang telah melayarinya

Criando Clusterização em Aplicações Node.js

Node.js ialah platform popular untuk membangunkan aplikasi berskala, tetapi seni bina satu benang boleh menjadi halangan dalam situasi beban tinggi. Untuk memanfaatkan sepenuhnya kuasa Node.js, pengelompokan ialah teknik berkesan yang membolehkan anda menggunakan berbilang teras CPU, meningkatkan prestasi dan responsif aplikasi anda.

Prasyarat

  • Node.js dipasang pada mesin anda. Anda boleh memuat turun versi terkini daripada nodejs.
  • Kebiasaan asas dengan JavaScript dan Node.js.

Langkah 1: Buat Projek Node.js Baharu

Mula-mula, buat direktori baharu untuk projek anda dan mulakan projek Node.js baharu:

mkdir node-cluster
Salin selepas log masuk
cd node-cluster
Salin selepas log masuk
npm init -y
Salin selepas log masuk

Langkah 2: Pasang Ketergantungan

Untuk tutorial ini, anda hanya memerlukan Node.js itu sendiri, tetapi kami akan menggunakan ekspres untuk mencipta pelayan HTTP yang mudah. Pasang ekspres dengan arahan berikut:

npm install express
Salin selepas log masuk

Langkah 3: Cipta Pelayan dengan Pengelompokan

Buat fail bernama server.js dan tambah kod berikut:

const cluster = require('cluster');
const express = require('express');
const http = require('http');
const os = require('os');

const app = express();
const numCPUs = os.cpus().length;

// Middleware para simular processamento intenso
app.get('/', (req, res) => {
  let sum = 0;
  for (let i = 0; i < 1e7; i++) {
    sum += i;
  }
  res.send(`Soma: ${sum}, Processado pelo Worker: ${process.pid}`);
});

// Lógica de clusterização
if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Cria um worker para cada núcleo de CPU
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} morreu`);
  });
} else {
  // Cada worker escuta na mesma porta
  const server = http.createServer(app);
  server.listen(3000, () => {
    console.log(`Worker ${process.pid} started`);
  });
}
Salin selepas log masuk

Konfigurasi kluster mesti dilakukan mengikut bilangan CPU yang tersedia pada mesin atau pelayan anda. Contohnya, jika pelayan anda mempunyai 6 CPU, adalah ideal untuk mencipta 6 pekerja untuk memanfaatkan sepenuhnya sumber yang ada. Menggunakan lebih ramai pekerja daripada teras CPU boleh menyebabkan beban berlebihan dan prestasi menurun, manakala penggunaan lebih sedikit pekerja boleh mengakibatkan kurang penggunaan sumber. Adalah disyorkan untuk menguji konfigurasi yang berbeza untuk mencari keseimbangan ideal antara prestasi dan penggunaan sumber.

Langkah 4: Jalankan Aplikasi

Kini anda boleh menjalankan aplikasi anda. Gunakan arahan berikut:

node server.js
Salin selepas log masuk

Jika anda mengikuti contoh, anda akan melihat sesuatu yang serupa dengan:
dalam terminal anda

Master 12345 is running
Worker 12346 started
Worker 12347 started
Worker 12348 started
Salin selepas log masuk

Langkah 5: Uji Aplikasi

Untuk menguji / laluan pelayan tempatan anda menggunakan curl, anda boleh menggunakan arahan berikut:

curl http://localhost:3000/
Salin selepas log masuk

Apabila anda menjalankan arahan di atas dalam terminal, anda sepatutnya menerima respons yang serupa dengan ini:

Soma: 49999995000000, Processado pelo Worker: 12348
Salin selepas log masuk

Atas ialah kandungan terperinci Mencipta Pengelompokan dalam Aplikasi Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!