Skip to Content

🔁 Single Threaded Execution (Node.js āĻ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇):


  1. āĻĒā§āϰāĻĨāĻŽā§‡ āϕ⧋āĻĄ initialize āĻšā§ŸāĨ¤
  2. Top-level āϕ⧋āĻĄ (main function-āĻāϰ āĻŦāĻžāχāϰ⧇āϰ āϕ⧋āĻĄ) execute āĻšā§ŸāĨ¤
  3. External module āϗ⧁āϞ⧋ import āĻ•āϰāĻž āĻšā§ŸāĨ¤
  4. Callback āĻŦāĻž Event āϗ⧁āϞ⧋ register āĻ•āϰāĻž āĻšā§Ÿ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻ–āύāχ execute āĻšā§Ÿ āύāĻžāĨ¤
  5. āĻāϰāĻĒāϰ Event Loop āĻļ⧁āϰ⧁ āĻšā§Ÿ, āϝāĻž registered callback āϗ⧁āϞ⧋ āĻĒāĻ°ā§āϝāĻžā§ŸāĻ•ā§āϰāĻŽā§‡ execute āĻ•āϰ⧇āĨ¤

screencapture-web-programming-hero-level2-batch-5-video-level2-batch-5-12-4-high-level-overview-of-node-js-architecture-2025-06-14-12_22_42.png


âš™ī¸ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝāĻĻāĻŋ āϕ⧋āύ Callback āĻ­āĻžāϰ⧀ āĻ•āĻžāϜ āĻšā§Ÿ?

  • āϝ⧇āĻŽāύ: File read, Crypto calculation, Image processingâ€Ļ
  • āϤāĻ–āύ Node.js āϏ⧇āχ āĻ­āĻžāϰ⧀ āĻ•āĻžāϜāϗ⧁āϞ⧋āϕ⧇ Thread Pool āĻ āĻĒāĻžāĻ āĻŋā§Ÿā§‡ āĻĻā§‡ā§ŸāĨ¤
  • āĻāχ Thread Pool āĻšāϞ⧋ āĻāĻ•āϗ⧁āĻšā§āĻ› Worker Thread āϝ⧇āϗ⧁āϞ⧋ āĻ“āχ āĻ­āĻžāϰ⧀ Task āϗ⧁āϞ⧋ handle āĻ•āϰ⧇āĨ¤
  • āĻ•āĻžāϜ āĻļ⧇āώ āĻšāϞ⧇ āϤāĻžāϰāĻž Event Loop āϕ⧇ āϜāĻžāύāĻžā§Ÿ, āϤāĻžāϰāĻĒāϰ Event Loop Output āĻĻ⧇āĻ–āĻžā§ŸāĨ¤

screencapture-web-programming-hero-level2-batch-5-video-level2-batch-5-12-4-high-level-overview-of-node-js-architecture-2025-06-14-12_20_46 (1).png


đŸŽ¯ āϏāĻžāϰāĻžāĻ‚āĻļ:

  • Process-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āϛ⧋āϟ execution units āĻšāϞ⧋ → Threads
  • Node.js āĻ main thread āĻāĻ•āϟāĻžāχ → Single Thread
  • āĻ­āĻžāϰ⧀ āĻ•āĻžāϜāϗ⧁āϞ⧋ āϜāĻ¨ā§āϝ āĻĨāĻžāϕ⧇ Thread Pool
  • āϏāĻŦ āĻ•āĻŋāϛ⧁āϰ āϏāĻŽāĻ¨ā§āĻŦ⧟ āĻ•āϰ⧇ Event Loop → āϤāĻžāχ āĻāϕ⧇ āĻŦāϞ⧇ Event Driven Architecture
  • Node.js āĻāĻ•āĻ• Thread-āĻ āϚāϞ⧇ → Single-threadedāĨ¤
  • āĻ•āĻŋāĻ¨ā§āϤ⧁ Node.js libuv āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ Thread Pool āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

🔧 Internal Thread Pool:

Node.js asynchronous āĻ•āĻžāϜ (āϝ⧇āĻŽāύ file system, DNS lookup āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāϰ āϜāĻ¨ā§āϝ background āĻ thread pool āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

// File read with thread pool const fs = require('fs'); fs.readFile('data.txt', (err, data) => { console.log("File read done"); });

👉 File read āĻšāϞ⧇ libuv Thread Pool-āĻ āϚāϞ⧇ āϝāĻžāϝāĻŧ, āφāϰ callback āĻĒāϰ⧇ Event Loop āĻ āĻĢāĻŋāϰ⧇ āφāϏ⧇āĨ¤


🚨 Single Threaded Architecture āĻāϰ Downside

āϧāϰ⧋, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ Node.js āϏāĻžāĻ°ā§āĻ­āĻžāϰ āφāϛ⧇ — āϝ⧇āϟāĻŋ single-threadedāĨ¤

āĻāĻ–āύ āĻāϕ⧇ āĻāϕ⧇ ā§Ē āϜāύ āχāωāϜāĻžāϰ āύāĻŋāĻšā§‡āϰ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟāϗ⧁āϞ⧋ āĻĒāĻžāĻ āĻžāĻšā§āϛ⧇:

  1. 🧑‍đŸ’ģ User 1: āĻĄā§‡āϟāĻž āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻ•āϰāϛ⧇ (āϏāĻšāϜ āĻ•āĻžāϜ)
  2. 🧑‍đŸ’ģ User 2: āĻāĻ•āϟāĻŋ āĻŦ⧜ āĻĢāĻžāχāϞ synchronously āĻĒ⧜āϤ⧇ āϚāĻžāĻšā§āϛ⧇ (āĻ­āĻžāϰāĻŋ āĻ•āĻžāϜ)
  3. 🧑‍đŸ’ģ User 3: Database query āĻ•āϰāϛ⧇
  4. 🧑‍đŸ’ģ User 4: āφāϰāĻ“ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻž āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻ•āϰāϛ⧇

screencapture-web-programming-hero-level2-batch-5-video-level2-batch-5-12-4-high-level-overview-of-node-js-architecture-2025-06-14-12_49_29.png


âš™ī¸ āĻāĻ–āύ āϕ⧀ āϘāϟāĻŦ⧇?

  • User 1 āĻāϰ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āϖ⧁āĻŦ āϏāĻšāϜ, āϏ⧇āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ Node.js āĻāϕ⧇ āϏāĻšāĻœā§‡āχ serve āĻ•āϰ⧇ āĻĻāĻŋāĻŦ⧇āĨ¤

  • āϤāĻžāϰāĻĒāϰ User 2 āĻāĻ•āϟāĻŋ synchronous file read āĻ•āϰāϤ⧇ āϚāĻžāĻšā§āϛ⧇āĨ¤

✅ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻŽāĻ¸ā§āϝāĻž āĻāĻ–āĻžāύ⧇! Synchronous āĻŽāĻžāύ⧇āχ āĻāĻ• āĻ•āĻžāϜ āĻļ⧇āώ āύāĻž āĻšāϞ⧇ āĻĒāϰ⧇āϰ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇ āύāĻžāĨ¤

āĻāĻ–āύ, āϝ⧇āĻšā§‡āϤ⧁ file read āĻāĻ•āϟāĻž heavy task, āĻāĻŦāĻ‚ āϏ⧇āϟāĻž synchronously āĻšāĻšā§āϛ⧇, āϤāĻžāχ:

  • āĻĒ⧁āϰ⧋ thread āϐ āĻ•āĻžāĻœā§‡āχ āφāϟāϕ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤
  • User 3 āĻ“ User 4āĻāϰ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻŦā§āϞāĻ• āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤
  • āĻĢāĻžāχāϞ āϝāϤ āĻŦ⧜, āĻ…āĻĒ⧇āĻ•ā§āώāĻžāϰ āϏāĻŽā§Ÿ āϤāϤ āĻŦ⧇āĻļāĻŋāĨ¤

āĻāϟāĻžāχ āĻšāĻšā§āϛ⧇ Single Threaded Architecture-āĻāϰ āĻŦ⧜ āĻāĻ•āϟāĻž disadvantageāĨ¤


screencapture-web-programming-hero-level2-batch-5-video-level2-batch-5-12-4-high-level-overview-of-node-js-architecture-2025-06-14-12_55_20 (2).png


đŸ› ī¸ āϏāĻŽāĻžāϧāĻžāύ āϕ⧀?

āĻāχ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻĻā§‡ā§Ÿ Thread Pool + Asynchronous ProgrammingāĨ¤

āϝāĻĻāĻŋ User 2 āĻĢāĻžāχāϞāϟāĻž asynchronously āĻĒ⧜āϤ⧋ āϤāĻžāĻšāϞ⧇:

  1. Node.js āϏ⧇āχ āĻ­āĻžāϰ⧀ āĻ•āĻžāϜāϟāĻž Thread PoolāĻ āĻĒāĻžāĻ āĻŋā§Ÿā§‡ āĻĻāĻŋāϤ⧋āĨ¤
  2. Thread Pool āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡ āĻ•āĻžāϜ āĻ•āϰāϤ⧋āĨ¤
  3. Event Loop meanwhile āĻ…āĻ¨ā§āϝ āχāωāϜāĻžāϰ (User 3 & 4) āĻāϰ āϰāĻŋāĻ•ā§‹ā§Ÿā§‡āĻ¸ā§āϟ āĻĒā§āϰāϏ⧇āϏ āĻ•āϰāϤ⧋āĨ¤
  4. āĻ•āĻžāϜ āĻļ⧇āώ āĻšāϞ⧇ Thread Pool Event Loop āϕ⧇ āϜāĻžāύāĻžāϤ⧋āĨ¤
  5. āϤāĻžāϰāĻĒāϰ Event Loop User 2āϕ⧇ āϤāĻžāϰ āĻĢāĻžāχāϞ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĒāĻžāĻ āĻŋā§Ÿā§‡ āĻĻāĻŋāϤ⧋āĨ¤

screencapture-web-programming-hero-level2-batch-5-video-level2-batch-5-12-4-high-level-overview-of-node-js-architecture-2025-06-14-13_16_59 (1).png


🔁 Event Driven Architecture āĻāϰ āϏ⧌āĻ¨ā§āĻĻāĻ°ā§āϝ

👉 Node.js āĻāĻ•āϟāĻžāχ āĻĨā§āϰ⧇āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ“ —

Asynchronous āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ­āĻžāϰ⧀ Task āϗ⧁āϞ⧋āϕ⧇ smartly handle āĻ•āϰ⧇āĨ¤

  • āϕ⧇āω Synchronous request āĻĒāĻžāĻ āĻžāϞ⧇ āĻĒ⧁āϰ⧋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āφāϟāϕ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ Asynchronous āĻšāϞ⧇, āĻ•āĻžāϜ āϗ⧁āϞ⧋ back-end āĻ āĻ­āĻžāĻ— āĻ•āϰ⧇ āĻĻ⧇āĻ“ā§ŸāĻž āĻšā§ŸāĨ¤
  • āĻāϤ⧇ āĻ•āϰ⧇ āϕ⧇āω āĻŦā§āϞāĻ• āĻšā§Ÿ āύāĻž, āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏāĻ“ āĻ•āĻŽā§‡ āύāĻžāĨ¤

✅ āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇:

  • Synchronous āĻ­āĻžāϰ⧀ āĻ•āĻžāϜāϗ⧁āϞ⧋ Single Thread āĻŦā§āϞāĻ• āĻ•āϰ⧇āĨ¤
  • Asynchronous + Thread Pool āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏ⧇āχ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤
  • āĻāϟāĻžāχ Node.js-āĻāϰ Event Driven, Non-blocking ArchitectureāĨ¤

✅ āωāĻĒāϏāĻ‚āĻšāĻžāϰ:

āĻŦāĻŋāώ⧟āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
Node.js ArchitectureEvent-driven, Non-blocking
Event LoopStack āĻ–āĻžāϞāĻŋ āĻĨāĻžāĻ•āϞ⧇ Callback Queue āĻĨ⧇āϕ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻ¨ā§‡ā§Ÿ
ProcessāĻĒ⧁āϰ⧋ Node.js āĻ…ā§āϝāĻžāĻĒ⧇āϰ runtime
ThreadProcess āĻāϰ āĻŽāĻ§ā§āϝ⧇ execution units; Node.js āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡ multiple thread āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇
Last updated on