تكرار السؤال: …
الإجابة المختصرة
تقوم بإنشاء عمليات فرعية (Workers) تشترك في نفس منفذ الخادم، وتوزع الطلبات الواردة بنظام Round-Robin.
الشرح
نظراً لأن Node.js أحادية الخيط، فإن خادماً يحتوي على 16 نواة سيعمل بنواة واحدة فقط ويهدر 15 نواة إن لم يتم تشغيل عدة عمليات. تقوم وحدة node:cluster بالسماح للعملية الأساسية (Primary) بإنشاء عمليات فرعية بواسطة cluster.fork()، وتمرير مقبس السيرفر وموازنة الحمل بينها، وإعادة إنشاء أي عملية فرعية تنهار فوراً.
مثال بالكود
import cluster from "node:cluster";
import os from "node:os";
if (cluster.isPrimary) {
const cpus = os.cpus().length;
for (let i = 0; i < cpus; i++) cluster.fork();
} else {
// كود الخادم العادي
}أخطاء شائعة
- مشاركة الذاكرة المباشرة بين الـ Worker processes دون استخدام وسيط موزع كـ Redis أو رسائل IPC.