Node.js Event Loop — সহজ বাংলায় সম্পূর্ণ ব্যাখ্যা
Node.js কীভাবে একটি single thread-এ হাজার হাজার request handle করে? Event Loop-এর রহস্য উন্মোচন করা হয়েছে এই পোস্টে।
Node.js interview-এ সবচেয়ে বেশি জিজ্ঞেস করা প্রশ্নগুলোর একটি হলো — "Event Loop কী?" এটা বোঝা না থাকলে অনেক কিছুই clear হয় না। আজকে সহজ করে বোঝানোর চেষ্টা করব।
Node.js কি Single-threaded?
হ্যাঁ, Node.js single-threaded। কিন্তু তাহলে কীভাবে এটি হাজার হাজার concurrent request handle করে? এটাই Event Loop-এর জাদু।
Event Loop কীভাবে কাজ করে?
মনে করুন একটি রেস্তোরাঁ আছে যেখানে মাত্র একজন waiter। কিন্তু সে খুব বুদ্ধিমান। সে একজনের কাছ থেকে order নিয়ে kitchen-এ দিয়ে আসে, তারপর অন্যজনের কাছে যায়। খাবার ready হলে kitchen থেকে call আসে, তখন সে deliver করে। কখনো বসে থাকে না।
Node.js-ও ঠিক এভাবে কাজ করে। একটি operation (যেমন database query বা file read) শুরু হলে Node.js সেটির জন্য অপেক্ষা না করে পরের কাজ শুরু করে। Operation শেষ হলে callback queue-তে যায় এবং Event Loop সেটি execute করে।
Call Stack, Callback Queue, Microtask Queue
Call Stack: synchronous code এখানে execute হয়।
Microtask Queue: Promises এবং async/await এখানে যায়। Call Stack খালি হলেই এগুলো execute হয় — Callback Queue-এর আগে।
Callback Queue (Task Queue): setTimeout, setInterval, I/O callbacks এখানে যায়।
Blocking vs Non-blocking
Node.js-এ কখনো CPU-intensive synchronous operation করবেন না। যেমন একটি বড় file synchronously পড়া (readFileSync) পুরো server-কে block করে। সবসময় async version ব্যবহার করুন।
Practical Example
Database থেকে data fetch করতে গেলে Node.js সেই query fire করে এবং পরের request handle করতে চলে যায়। Database response আসলে callback execute হয়। এই কারণে Node.js high-concurrency API server-এর জন্য অত্যন্ত উপযুক্ত।