𝗡𝗼𝗱𝗲.𝗷𝘀 𝗘𝘃𝗲𝗻𝘁 𝗟𝗼𝗼𝗽 𝗜𝗺𝗲𝗲𝗹𝗲𝘇𝘄𝗮

Node.js hutumia thread moja. Unaweza kujiuliza jinsi inavyoweza kushughulikia maombi maelfu kwa wakati mmoja.

Siri ni Event Loop.

Badala ya kusubiri kazi imalizike, Node.js hutuma kazi zinazochukua muda mrefu kwenye mfumo wa uendeshaji (operating system). Inaendelea na kazi inayofuata. Hii inafanya programu zako ziwe na kasi na inayojibu haraka.

Blocking dhidi ya Non-blocking

Ukitumia kazi za sync kama readFileSync, seva inasimama. Inasubiri faili imalize kusomwa. Hakuna mtumiaji mwingine anayepata majibu. Hii inaharibu utendaji wako.

Ukitumia fs.readFile, seva inaendelea kufanya kazi. Inashughulikia maombi mengine wakati faili ikisomwa kwa nyuma.

Jinsi Event Loop inavyofanya kazi

Loop hiyo hupitia hatua kadhaa:

• Timers: Inashughulikia setTimeout na setInterval. • Pending Callbacks: Inashughulikia makosa ya kiwango cha mfumo (system level errors). • Poll: Inapokea miunganisho mipya na kushughulikia I/O kama vile maswali ya hifadhidata (database queries). • Check: Inashughulikia setImmediate. • Close Callbacks: Inashughulikia kufungwa kwa socket.

Mpangilio wa Kipaumbele

Sio kazi zote ni sawa. Node.js hutumia foleni (queues) mbili:

  1. Microtask Queue: Hii huhifadhi Promises.
  2. Callback Queue: Hii huhifadhi setTimeout na I/O.

Microtask Queue kila wakati huanza kwanza. Ikiwa una Promise na setTimeout, Promise itamalizika kabla ya timer.

Call Stack na Queues

Call Stack hufuatilia ni kodi gani inayofanya kazi sasa hivi. Kazi ikimalizika, callback yake huingia kwenye foleni (queue). Event Loop inasubiri hadi Call Stack iwe tupu kabla ya kuchukua kazi kutoka kwenye foleni.

Epuka makosa haya:

• Usitumie loop zisizo na mwisho (infinite loops). Hii inafanya programu yako nzima igande. • Usitumie njia za faili za synchronous (synchronous file methods) kwenye mazingira ya uzalishaji (production). • Usifanye hesabu nzito au usindikaji wa video kwenye thread kuu (main thread).

Kwa kazi nzito, tumia Worker Threads au kazi za nyuma (background jobs).

Muhtasari

Node.js ina kasi kwa sababu haisubiri. Inapangia kazi za I/O wengine na kutumia Event Loop kusimamia matokeo. Muundo huu unaruhusu thread moja kuhudumia watumiaji wengi.

Ni sehemu gani ya Event Loop ilikuwa ngumu zaidi kwako kujifunza? Niambie kwenye maoni.

Chanzo: https://dev.to/synfinity-dynamics-pvt-ltd/nodejs-event-loop-explained-how-nodejs-handles-thousands-of-concurrent-requests-1heo