Node.js terkenal dengan kelajuan dan kecekapan, menjadikannya pilihan popular untuk membina aplikasi berprestasi tinggi dan berskala.
Walau bagaimanapun, di luar kotak, Node.js adalah satu-benang, bermakna ia berjalan pada satu teras CPU, yang boleh mengehadkan dalam persekitaran pelayan berbilang teras. Jika aplikasi anda intensif sumber atau anda menjangkakan trafik yang tinggi, anda perlu memaksimumkan penggunaan teras CPU pelayan anda.
Di situlah pengelompokan Node.js masuk.
Dalam siaran ini, kami akan menyelami apa itu pengelompokan Node.js, mengapa ia penting dan cara anda boleh menggunakannya untuk meningkatkan prestasi aplikasi anda.
Pengkelompokan Node.js ialah teknik yang membolehkan anda menggunakan semua teras CPU dengan menghasilkan berbilang kejadian (pekerja) aplikasi Node.js anda.
Pekerja ini berkongsi pelabuhan yang sama dan diuruskan oleh proses induk. Setiap pekerja boleh mengendalikan permintaan masuk secara bebas, membenarkan permohonan anda mengagihkan beban kerja dan memproses permintaan secara selari.
Dengan mengelompokkan aplikasi Node.js anda, anda boleh:
Dalam gugusan Node.js, terdapat proses induk yang mengawal beberapa proses pekerja.
Proses induk tidak mengendalikan permintaan HTTP secara langsung tetapi mengurus pekerja yang melakukannya. Permintaan daripada pelanggan diedarkan ke seluruh pekerja ini, mengimbangi beban dengan cekap.
Jika proses pekerja ranap atas sebab tertentu, proses induk boleh melahirkan proses baharu, memastikan masa henti yang minimum.
Pengelompokkan amat berguna apabila aplikasi anda:
Dalam kes di atas, anda boleh meningkatkan melalui menggunakan teknik pengaturcaraan tak segerak.
Node.js menyediakan modul kluster terbina dalam untuk mencipta kluster dengan mudah. Mari kita lihat contoh mudah cara mengelompokkan aplikasi Node.js anda.
Langkah 1: Sediakan Aplikasi Anda
Sebelum menambah pengelompokan, anggap anda mempunyai pelayan HTTP yang mudah (server.js):
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200); res.end('Hello World\n'); }); server.listen(3000, () => { console.log(`Worker process ID: ${process.pid} is listening on port 3000`); });
Aplikasi ini berjalan pada satu teras. Mari ubah suai untuk menggunakan pengelompokan.
Langkah 2: Menggunakan Modul kluster
Modul kluster membolehkan kami menukar proses semasa ke dalam berbilang proses pekerja. Begini cara melaksanakan pengelompokan:
const cluster = require('cluster'); const http = require('http'); const os = require('os'); // Get the number of CPU cores const numCPUs = os.cpus().length; if (cluster.isMaster) { console.log(`Master process ID: ${process.pid}`); // Fork workers for each CPU core for (let i = 0; i < numCPUs; i++) { cluster.fork(); } // Listen for worker exit and replace it with a new one cluster.on('exit', (worker, code, signal) => { console.log(`Worker ${worker.process.pid} died. Spawning a new one...`); cluster.fork(); }); } else { // Workers share the same TCP connection http.createServer((req, res) => { res.writeHead(200); res.end('Hello from worker ' + process.pid + '\n'); }).listen(3000); console.log(`Worker process ID: ${process.pid}`); }
Penjelasan:
1. Proses Induk: Apabila proses bermula, ia menyemak sama ada ia adalah proses induk (cluster.isMaster). Tuan bertanggungjawab untuk membuat proses pekerja, satu untuk setiap teras CPU. Kaedah os.cpus() digunakan untuk mendapatkan semula bilangan teras CPU yang tersedia.
2. Proses Pekerja: Untuk setiap teras CPU, pekerja baharu dicabang (cluster.fork()). Proses pekerja ini menjalankan pelayan HTTP dan mengendalikan permintaan masuk.
3. Toleransi Kesalahan: Jika proses pekerja ranap, peristiwa cluster.on('exit') akan dicetuskan dan pekerja baharu akan muncul untuk menggantikan yang mati.
Langkah 3: Menguji Aplikasi Berkelompok Anda
Sekarang, jika anda menjalankan aplikasi:
node server.js
Anda akan perasan bahawa berbilang pekerja dibuat, masing-masing dengan ID proses yang unik. Setiap permintaan dikendalikan oleh pekerja yang berbeza, mengimbangi beban dengan berkesan.
Anda boleh menguji cara pengelompokan meningkatkan prestasi aplikasi anda dengan menghantar berbilang permintaan dan memerhatikan cara beban kerja diagihkan di kalangan pekerja.
Jadi, pada kali seterusnya anda membina aplikasi Node.js berprestasi tinggi, ingat untuk mempertimbangkan pengelompokan!
Itu sahaja untuk blog ini! Nantikan lebih banyak kemas kini dan teruskan membina apl yang menakjubkan! ?✨
Selamat mengekod! ?
Atas ialah kandungan terperinci Kelompokkan Aplikasi Node.js Anda untuk Prestasi Lebih Baik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!