𝗡𝗼𝗱𝗲.𝗷𝘀 𝗘𝘃𝗲𝗻𝘁 𝗟𝗼𝗼𝗽 ની સમજૂતી
Node.js સિંગલ થ્રેડ (single thread) નો ઉપયોગ કરે છે. તમને કદાચ નવાઈ લાગશે કે તે એકસાથે હજારો વિનંતીઓ (requests) કેવી રીતે સંભાળે છે.
તેનું રહસ્ય Event Loop છે.
કોઈ કાર્ય પૂર્ણ થાય તેની રાહ જોવાને બદલે, Node.js સમય લેતા કાર્યોને ઓપરેટિંગ સિસ્ટમને મોકલી દે છે. તે સતત આગલા કાર્ય તરફ આગળ વધતું રહે છે. આ તમારી એપ્લિકેશન્સને ઝડપી અને પ્રતિભાવશીલ (responsive) બનાવે છે.
Blocking વિરુદ્ધ Non-blocking
જો તમે readFileSync જેવા sync functions નો ઉપયોગ કરો છો, તો સર્વર અટકી જાય છે. તે ફાઇલ વાંચવાનું પૂર્ણ થાય તેની રાહ જુએ છે. અન્ય કોઈ વપરાશકર્તાને પ્રતિસાદ (response) મળતો નથી. આ તમારા પર્ફોર્મન્સને બગાડે છે.
જો તમે fs.readFile નો ઉપયોગ કરો છો, તો સર્વર ચાલતું રહે છે. જ્યારે બેકગ્રાઉન્ડમાં ફાઇલ વાંચવામાં આવી રહી હોય, ત્યારે તે અન્ય વિનંતીઓ (requests) ને સંભાળે છે.
Event Loop કેવી રીતે કામ કરે છે
લૂપ કેટલાક તબક્કાઓમાંથી પસાર થાય છે:
• Timers: setTimeout અને setInterval ને સંભાળે છે.
• Pending Callbacks: સિસ્ટમ લેવલની ભૂલોને સંભાળે છે.
• Poll: નવા કનેક્શન મેળવે છે અને ડેટાબેઝ ક્વેરીઝ જેવા I/O ને સંભાળે છે.
• Check: setImmediate ને સંભાળે છે.
• Close Callbacks: સોકેટ ક્લોઝર (socket closures) ને સંભાળે છે.
પ્રાથમિકતાનો ક્રમ (The Priority Order)
બધા કાર્યો સમાન નથી હોતા. Node.js બે ક્યુ (queues) નો ઉપયોગ કરે છે:
- Microtask Queue: આમાં Promises હોય છે.
- Callback Queue: આમાં
setTimeoutઅને I/O હોય છે.
Microtask Queue હંમેશા પહેલા ચાલે છે. જો તમારી પાસે એક Promise અને એક setTimeout હોય, તો ટાઈમર પહેલા Promise પૂર્ણ થશે.
Call Stack અને Queues
Call Stack અત્યારે કયો કોડ ચાલી રહ્યો છે તેનો ટ્રેક રાખે છે. જ્યારે કોઈ કાર્ય પૂર્ણ થાય છે, ત્યારે તેનું callback એક ક્યુ (queue) માં જાય છે. Event Loop ક્યુમાંથી કાર્યો લેતા પહેલા Call Stack ખાલી થાય ત્યાં સુધી રાહ જુએ છે.
આ ભૂલો ટાળો:
• અનંત લૂપ્સ (infinite loops) નો ઉપયોગ કરશો નહીં. આ તમારી આખી એપને ફ્રીઝ કરી દેશે. • પ્રોડક્શનમાં synchronous ફાઇલ મેથડ્સનો ઉપયોગ કરશો નહીં. • મેઈન થ્રેડ પર ભારે ગણતરીઓ (heavy math) અથવા વિડિયો પ્રોસેસિંગ કરશો નહીં.
ભારે કાર્યો માટે, Worker Threads અથવા બેકગ્રાઉન્ડ જોબ્સનો ઉપયોગ કરો.
સારાંશ (Summary)
Node.js ઝડપી છે કારણ કે તે રાહ જોતું નથી. તે I/O કાર્યોને સોંપે છે અને પરિણામોનું સંચાલન કરવા માટે Event Loop નો ઉપયોગ કરે છે. આ આર્કિટેક્ચર એક થ્રેડને ઘણા વપરાશકર્તાઓને સેવા આપવા દે છે.
Event Loop નો કયો ભાગ શીખવામાં તમને સૌથી અઘરો લાગ્યો? મને કોમેન્ટમાં જણાવો.