Rumah >hujung hadapan web >tutorial js >Corak Master-Worker dalam NodeJS: Diterangkan
Node.js, platform pembangunan berasaskan JavaScript, memperkasakan pembangun untuk membina aplikasi sisi pelayan menggunakan JavaScript. Seni bina berbenang tunggal, didorong peristiwa adalah kekuatan utama, mengurus pelbagai permintaan serentak dengan cekap tanpa overhed berbilang urutan atau proses.
Walaupun mempunyai kelebihannya, sifat benang tunggal Node.js memberikan batasan:
Penyelesaian? Corak Induk-Pekerja Node.js (juga dikenali sebagai Mod Kluster). Reka bentuk sistem teragih ini menggunakan proses induk yang menyelia pelbagai proses pekerja. Tuan mengurus dan memantau pekerja, manakala pekerja mengendalikan tugas individu.
Node.js memanfaatkan modul cluster
untuk pelaksanaan Master-Worker. Modul ini memudahkan penciptaan pelbagai proses kanak-kanak dan menyediakan mekanisme untuk kawalan dan komunikasi antara proses. Berikut ialah pecahan:
cluster
dan kenal pasti sama ada proses semasa adalah induk atau pekerja.cluster.fork()
untuk melahirkan proses pekerja dan lampirkan pendengar acara untuk memantau status dan mesej mereka.process.send()
.Contoh asas ini menunjukkan modul cluster
:
<code class="language-javascript">const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`Master ${process.pid} is running`); // Spawn workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`Worker ${worker.process.pid} died`); }); } else { // Workers share a TCP connection (e.g., HTTP server). http .createServer((req, res) => { res.writeHead(200); res.end('Hello from Worker!'); }) .listen(8000); console.log(`Worker ${process.pid} started`); }</code>
Proses induk menentukan sama ada ia adalah induk (menggunakan cluster.isMaster
). Jika ya, ia mewujudkan pekerja yang sama dengan kiraan teras CPU. Setiap pekerja adalah proses bebas dengan ingatan sendiri dan contoh V8. Pekerja menubuhkan pelayan HTTP dan mendengar permintaan. Acara exit
mengendalikan ranap pekerja, membolehkan induk memulakannya semula.
Tingkatkan kebolehskalaan dengan menggunakan Nginx sebagai proksi terbalik dan pengimbang beban untuk mengedarkan permintaan merentas berbilang proses Node.js.
Contoh Konfigurasi Nginx:
<code class="language-nginx">http { upstream node_cluster { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; # ... more Node.js processes } server { listen 80; location / { proxy_pass http://node_cluster; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } }</code>
Nginx mengedarkan permintaan secara sama rata antara proses Node.js yang disenaraikan dalam node_cluster
.
Ringkasnya, Corak Sarjana-Pekerja Node.js, yang dilaksanakan menggunakan modul cluster
, menawarkan kaedah yang mudah tetapi berkuasa untuk membina aplikasi berbilang proses, meningkatkan prestasi dan kebolehpercayaan.
Leapcell ialah platform tanpa pelayan generasi akan datang untuk pengehosan web, tugas tak segerak dan Redis:
Keserasian Berbilang Bahasa
Pengeluaran Projek Percuma Tanpa Had
Keberkesanan Kos yang Luar Biasa
Aliran Kerja Pembangun Diperkemas
Skala Mudah dan Prestasi Tinggi
Ketahui lebih lanjut dalam Dokumentasi!
Ikuti kami di X: @LeapcellHQ
Baca lebih lanjut di blog kami
Atas ialah kandungan terperinci Corak Master-Worker dalam NodeJS: Diterangkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!