Load Balancing & Node Clustering
Load Balancing & Node Clustering (Express.js)
High traffic ওয়েব অ্যাপ্লিকেশন পরিচালনার জন্য Load Balancing ও Node Clustering অত্যন্ত গুরুত্বপূর্ণ। এই টপিকে আমরা Express.js ব্যবহার করে কিভাবে scalable এবং high-performance server তৈরি করা যায় তা শিখবো।
⚖️ Load Balancing কী?
Load Balancing হলো একাধিক server বা process-এর মধ্যে incoming request সমানভাবে ভাগ করে দেওয়া। এর ফলে একটি single server-এর উপর অতিরিক্ত চাপ পড়ে না এবং ওয়েবসাইট দ্রুত ও নির্ভরযোগ্যভাবে কাজ করে।
🚀 Performance
Multiple process ব্যবহার করে দ্রুত response পাওয়া যায়
🔄 High Availability
একটি server down হলেও অ্যাপ্লিকেশন সচল থাকে
📈 Scalability
সহজেই traffic বাড়ানো ও manage করা যায়
🧩 Node Clustering কী?
Node.js default ভাবে single-threaded। কিন্তু Cluster module ব্যবহার করে আমরা CPU-এর সব core কাজে লাগাতে পারি এবং একাধিক worker process তৈরি করতে পারি।
🔹 Basic Cluster Setup
const cluster = require('cluster');
const os = require('os');
const express = require('express');
if (cluster.isMaster) {
const cpuCount = os.cpus().length;
for (let i = 0; i < cpuCount; i++) {
cluster.fork();
}
} else {
const app = express();
app.get('/', (req, res) => {
res.send(`Worker ${process.pid} running`);
});
app.listen(3000);
}
🔹 কী হচ্ছে এখানে?
- Master process CPU core অনুযায়ী worker তৈরি করছে
- প্রতিটি worker আলাদা process হিসেবে চলছে
- Incoming request গুলো worker-এর মধ্যে ভাগ হচ্ছে
🌐 Nginx দিয়ে Load Balancing
Production environment-এ সাধারণত Nginx ব্যবহার করে একাধিক Node.js application-এর মধ্যে load balance করা হয়।
upstream node_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://node_app;
}
}
✅ Best Practices
- PM2 ব্যবহার করে clustering সহজ করুন
- Sticky session প্রয়োজন হলে Redis ব্যবহার করুন
- Health check endpoint রাখুন
- Nginx বা Load Balancer-এর timeout ঠিকভাবে configure করুন
🏢 Real-Life Use Case
একটি e-commerce বা learning platform-এ হাজার হাজার user একসাথে request পাঠালে Load Balancing ও Node Clustering ব্যবহার করে সার্ভারকে crash হওয়া থেকে বাঁচানো যায় এবং smooth user experience নিশ্চিত করা যায়।
লোড হচ্ছে...
1. Load Balancing কী?
Load Balancing হলো একাধিক সার্ভারের মধ্যে ট্রাফিক ভাগ করে দেওয়া, যাতে কোনো একটি সার্ভারের উপর বেশি চাপ না পড়ে।
2. Node.js এ Clustering কেন প্রয়োজন?
Node.js single-threaded হওয়ায় clustering ব্যবহার করে একাধিক CPU core কাজে লাগানো যায়।