Synchronous vs Asynchronous Programming
Synchronous vs Asynchronous Programming in Node.js
Node.js একটি ইভেন্ট-ড্রিভেন এবং নন-ব্লকিং প্ল্যাটফর্ম, যার মূল শক্তি হলো Asynchronous Programming. কিন্তু একজন Node.js ডেভেলপার হিসেবে Synchronous এবং Asynchronous কাজের পার্থক্য পরিষ্কারভাবে বোঝা খুব জরুরি।
⏳ Synchronous Programming (Blocking)
Synchronous মানে হলো কোড লাইন বাই লাইন execute হবে। একটি কাজ শেষ না হওয়া পর্যন্ত পরের লাইন শুরু হবে না। একে Blocking Programming বলা হয়।
📌 সিনক্রোনাস কোডের উদাহরণ:
const fs = require("fs");
console.log("Start");
const data = fs.readFileSync("file.txt", "utf-8"); // Blocking
console.log(data);
console.log("End");
Output:
Start
(file reading...)
End
এখানে readFileSync() কাজ শেষ না হওয়া পর্যন্ত অন্য কোন কোড চলবে না। বড় ফাইল হলে সার্ভার hang করতে পারে।
📍 Synchronous Programming এর সমস্যা
- Blocking — সার্ভার ধীরে কাজ করে।
- Concurrent request handle করা কঠিন।
- CPU wait করে থাকে I/O কাজের জন্য।
- Real-time অ্যাপের জন্য উপযুক্ত নয়।
⚡ Asynchronous Programming (Non-Blocking)
Asynchronous মানে হলো একটি কাজ শুরু করলে Node.js সেটিকে ব্যাকগ্রাউন্ডে পাঠিয়ে অন্য কাজ চালাতে পারে। একে বলা হয় Non-Blocking Programming।
📌 অ্যাসিনক্রোনাস কোডের উদাহরণ:
const fs = require("fs");
console.log("Start");
fs.readFile("file.txt", "utf-8", (err, data) => {
console.log(data);
});
console.log("End");
Output:
Start
End
(file content printed later)
Node.js ফাইল পড়ার কাজ ব্যাকগ্রাউন্ডে পাঠিয়ে দেয় এবং meantime অন্য কোড execute করতে থাকে। সার্ভার কখনো ব্লক হয় না।
📍 Asynchronous Programming এর সুবিধা
- Non-Blocking — সার্ভার দ্রুত কাজ করে।
- একই সাথে হাজারো request handle করতে পারে।
- High-performance অ্যাপ বানাতে সাহায্য করে।
- অতিরিক্ত thread তৈরি করতে হয় না — lightweight।
📊 Synchronous vs Asynchronous — পার্থক্য
| Synchronous | Asynchronous |
|---|---|
| Blocking (একটি কাজ শেষ না হলে পরেরটি শুরু হয় না) | Non-Blocking (অন্য কাজ ব্লক করে না) |
| Slow performance | High performance |
| CPU ও Event Loop অপেক্ষা করে | Event Loop ব্যাকগ্রাউন্ডে কাজ পাঠিয়ে এগিয়ে যায় |
| Real-time অ্যাপের জন্য উপযুক্ত নয় | Real-time অ্যাপ (chat, gaming, streaming) এর জন্য perfect |
🔄 Node.js Event Loop এর ভূমিকা
Asynchronous programming এর মূল ভিত্তি হলো Event Loop। এটি ব্যাকগ্রাউন্ডে asynchronous কাজগুলো queue তে রাখে এবং যখন কাজ শেষ হয় তখন callback execute করে।
Asynchronous কাজ = main thread ব্লক না করে queue তে কাজ পাঠায়
📌 কখন Synchronous ব্যবহার করবেন?
- স্ক্রিপ্ট খুব ছোট হলে
- Config বা স্টার্টআপ ফাইল পড়তে
- ডেভেলপমেন্ট মোডে টেস্টিং এর সময়
📌 কখন Asynchronous ব্যবহার করবেন?
- Server/Backend development
- API calling, database query
- Large file handling
- Real-time apps (Chat, Video call, Live data)
📌 সারাংশ
Node.js মূলত Asynchronous programming এর উপর ভিত্তি করে তৈরি। Synchronous কোড ব্লক করে, কিন্তু Asynchronous কোড সার্ভারকে দ্রুত ও scalable করে। Real-time, High-performance অ্যাপ এর জন্য Asynchronous programming অপরিহার্য।
লোড হচ্ছে...
1. Synchronous প্রোগ্রামিং কী?
সিঙ্ক্রোনাস প্রোগ্রামিংয়ে একবারে একটি কাজ সম্পন্ন হয় এবং একটি কাজ শেষ না হলে পরবর্তী কাজ শুরু হয় না।
2. Asynchronous প্রোগ্রামিং কী?
অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ে একাধিক কাজ একসাথে চলতে পারে এবং কোনো কাজ শেষ হওয়ার জন্য পুরো প্রোগ্রাম ব্লক হয় না।
3. Node.js এ Asynchronous প্রোগ্রামিং কেন গুরুত্বপূর্ণ?
Node.js একক থ্রেডে কাজ করে, তাই নন-ব্লকিং অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং ব্যবহার করে বেশি রিকোয়েস্ট দ্রুত হ্যান্ডেল করা যায়।