Rumah >hujung hadapan web >tutorial js >Corak Master-Worker dalam NodeJS: Diterangkan

Corak Master-Worker dalam NodeJS: Diterangkan

Barbara Streisand
Barbara Streisandasal
2025-01-20 10:33:40552semak imbas

Master-Worker Pattern in NodeJS: Explained

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.

Mengapa Merangkul Model Sarjana-Pekerja?

Walaupun mempunyai kelebihannya, sifat benang tunggal Node.js memberikan batasan:

  • Operasi Terikat CPU: Tugas seperti manipulasi imej atau fungsi kriptografi boleh menyekat urutan tunggal, memberi kesan kepada prestasi keseluruhan.
  • Pengendalian Ralat Teguh: Ranap urutan tunggal disebabkan ralat atau pengecualian menghentikan keseluruhan aplikasi.
  • Ketidakcekapan Berbilang Teras: Model benang tunggal kurang menggunakan pemproses berbilang teras.

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.

Melaksanakan Corak Sarjana-Pekerja

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:

  1. Import modul cluster dan kenal pasti sama ada proses semasa adalah induk atau pekerja.
  2. Jika ia adalah tuan, gunakan cluster.fork() untuk melahirkan proses pekerja dan lampirkan pendengar acara untuk memantau status dan mesej mereka.
  3. Proses pekerja melaksanakan tugas tertentu dan berkomunikasi dengan tuan melalui process.send().

Contoh Mudah

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.

Aplikasi Terperinci: Nginx Load Balancing

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.

Kelebihan Corak Master-Pekerja

  • Pengagihan Beban: Pelbagai proses Node.js mengedarkan permintaan masuk, meningkatkan daya pemprosesan.
  • Toleransi Kesalahan dan Ketersediaan: Kemalangan pekerja tidak menjejaskan orang lain; tuan memulakannya semula.
  • Pengendalian Tugasan Terikat CPU: Berbilang pekerja mengendalikan operasi intensif CPU, menghalang sekatan benang utama.

Perkara untuk Dipertimbangkan

  • Negeri Kongsi: Pekerja adalah bebas; perkongsian negeri memerlukan penyelesaian luaran seperti pangkalan data.

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: Penyelesaian Pengehosan Node.js Premier Anda

Master-Worker Pattern in NodeJS: Explained

Leapcell ialah platform tanpa pelayan generasi akan datang untuk pengehosan web, tugas tak segerak dan Redis:

Keserasian Berbilang Bahasa

  • Bangun menggunakan Node.js, Python, Go atau Rust.

Pengeluaran Projek Percuma Tanpa Had

  • Bayar hanya untuk penggunaan; tiada permintaan, tiada caj.

Keberkesanan Kos yang Luar Biasa

  • Bayar semasa anda pergi tanpa yuran terbiar.
  • Contoh: $25 mengendalikan 6.94 juta permintaan dengan purata masa tindak balas 60ms.

Aliran Kerja Pembangun Diperkemas

  • Antara muka mesra pengguna untuk persediaan mudah.
  • Saluran paip CI/CD automatik dan penyepaduan GitOps.
  • Pemantauan dan pengelogan masa nyata.

Skala Mudah dan Prestasi Tinggi

  • Penskalaan automatik untuk konkurensi tinggi.
  • Sifar overhed operasi.

Ketahui lebih lanjut dalam Dokumentasi!

Master-Worker Pattern in NodeJS: Explained

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!

Kenyataan:
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