Node.js Cluster Module: Scaling Applications Your Applications

بهینه سازی کد برای رسیدگی به تعداد زیادی درخواست و اطمینان از عملکرد بهینه برنامه شما ضروری است. یکی از راههای بهبود عملکرد برنامه Node.js استفاده از ماژول کلاستر است.
در این وبلاگ، ماژول Node.js cluster چیست، چگونه کار می کند و چگونه می توانید از آن برای بهبود عملکرد برنامه های خود استفاده کنید، بحث خواهیم کرد.
Node.js Cluster Module چیست؟
ماژول کلاستر یک ماژول داخلی در Node.js است که به شما امکان می دهد چندین فرآیند کارگر را برای مدیریت بار یک برنامه واحد اجرا کنید. این به شما امکان می دهد از تمام هسته های CPU سیستم خود استفاده کنید و در نتیجه عملکرد و مقیاس پذیری بهتری خواهید داشت.
ماژول کلاستر چگونه کار می کند؟
ماژول خوشه با جدا کردن چندین فرآیند کارگر از یک فرآیند اصلی کار می کند. هر فرآیند کارگر به عنوان یک نمونه جداگانه از برنامه اجرا می شود و مسئول رسیدگی به درخواست ها است. پروسه اصلی وظیفه نظارت بر فرآیندهای کارگر و در صورت لزوم فوکوس کردن فرآیندهای جدید را بر عهده دارد.
پیاده سازی ماژول کلاستر با Express
برای استفاده از ماژول کلاستر با Express، ابتدا باید ماژول های لازم از جمله ماژول های کلاستر و اکسپرس را وارد کنید. سپس، می توانید یک برنامه Express ایجاد کنید و یک نقطه پایانی را برای رسیدگی به درخواست ها مشخص کنید. در نقطه پایانی، می توانید یک کار فشرده CPU را برای نشان دادن اثربخشی ماژول کلاستر انجام دهید.
در اینجا مثالی از نحوه استفاده از ماژول کلاستر با Express آورده شده است:
const cluster = require('cluster');
const express = require('express');
const numCPUs = require('os').cpus().length;
const app = express();
app.get("https://dev.to/", (req, res) => {
//cpu intensive task
for(let i = 0; i < 1e8; i++){
console.log(i)
}
res.send(`Hello World! from ${process.pid}`);
});
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
cluster.fork()
});
} else {
app.listen(3000, () => {
console.log(`Server Worker ${process.pid} started`);
});
}
در این مثال، cluster.isMaster
شرط بررسی می کند که آیا فرآیند فعلی، فرآیند اصلی است یا خیر. اگر اینطور باشد، پردازش اصلی چندین فرآیند کارگر را با استفاده از cluster.fork()
روش. اگر فرآیند فعلی یک فرآیند کارگری باشد، برنامه Express به درخواستها در پورت 3000 گوش میدهد.
فرآیند اصلی نیز به گوش میدهد exit
رویدادی که با از بین رفتن یک فرآیند کارگر منتشر می شود. در این مثال، اگر یک فرآیند کارگر از بین برود، فرآیند اصلی یک فرآیند جدید را برای جایگزینی آن ایجاد می کند.
مزایای استفاده از ماژول کلاستر
استفاده از ماژول کلاستر Node.js چندین مزیت دارد، از جمله:
- عملکرد بهبود یافته: با انشعاب چندین فرآیند کارگری، میتوانید از تمام هستههای CPU سیستم خود بهره ببرید و در نتیجه عملکرد بهتری داشته باشید.
- مقیاسپذیری بهتر: با انشعاب فرآیندهای کارگری جدید در صورت لزوم، میتوانید تعداد زیادی از درخواستها را بدون کاهش عملکرد مدیریت کنید.
- قابلیت اطمینان بهبود یافته: اگر یک فرآیند کارگری از کار بیفتد، فرآیند اصلی میتواند به طور خودکار فرآیند جدیدی را ایجاد کند و اطمینان حاصل کند که برنامه شما در دسترس و قابل اعتماد باقی میماند.
- پیاده سازی آسان: ماژول کلاستر یک ماژول داخلی در Node.js است، بنابراین نیازی به نصب بسته های اضافی ندارید. علاوه بر این، پیاده سازی آن ساده است و می توان آن را با حداقل تغییرات به برنامه های موجود خود اضافه کرد.
در نتیجه، ماژول کلاستر Node.js یک ابزار عالی برای بهبود عملکرد و مقیاس پذیری برنامه های شما است. با انشعاب چندین فرآیند کارگری، میتوانید از تمام هستههای CPU سیستم خود بهره ببرید و تعداد زیادی از درخواستها را به طور موثر مدیریت کنید. علاوه بر این، ماژول کلاستر با انشعاب فرآیندهای کارگری جدید در صورت خرابی یک فرآیند کارگر، قابلیت اطمینان بهبود یافته را فراهم می کند.