हम सभी जानते हैं कि NodeJs सामान्य जावा सर्वर की तुलना में अधिक अनुरोधों को संभाल सकता है, लेकिन आने वाले अनुरोधों के लिए कोई FIFO प्रकार की संरचना को कैसे बनाए रखता है?
आइए एक फ्लैश सेल कहें, जहां हजारों अनुरोध कम समय में सीमित मात्रा में कुछ खरीदने के लिए बमबारी करते हैं ??
हम कैसे तय करते हैं कि कौन सा अनुरोध पहले उत्पाद प्राप्त करने और उत्पाद की स्थिति को available
से sold out
(सिर्फ एक उदाहरण) में बदलने के लिए मिलता है?
धन्यवाद
1 उत्तर
नोड.जेएस में, केवल एक अनुरोध वास्तव में एक समय में चलता है (जावास्क्रिप्ट दुभाषिया सिंगल थ्रेडेड है) जब तक आप मूल कोड में किसी प्रकार के एसिंक ऑपरेशन को हिट नहीं करते हैं और फिर दूसरा अनुरोध चलना शुरू हो जाता है जबकि दूसरा I/O की प्रतीक्षा कर रहा है . यदि कुछ सीमित संसाधन हैं जो सभी अनुरोधों के बाद हैं, तो यह केवल यह देखने की दौड़ है कि संसाधन प्राप्त करने के लिए आपके कोड के माध्यम से कौन सा अनुरोध काफी दूर हो जाता है। यदि आप अपने सर्वर को अतिरिक्त मापनीयता के लिए क्लस्टर करते हैं, तो प्रत्येक क्लस्टर एक जावास्क्रिप्ट थ्रेड चलाता है।
यदि आप प्रत्येक आने वाले अनुरोध को एक कतार में प्रतीक्षा करते हैं, जब तक कि इससे पहले आने वाले सभी अनुरोध पूरी तरह से नहीं हो जाते (ऐसा कुछ जो किया जा सकता है), तो आप गंभीरता से अपने नोड.जेएस सर्वर की मापनीयता को बर्बाद कर देंगे और अधिकांश समय ऐसा होगा कुछ I/O ऑपरेशन किए जाने की प्रतीक्षा में बेकार बैठे रहें, इसलिए ऐसा लगता है कि यह सही डिज़ाइन नहीं है।
आइए एक फ्लैश सेल कहें, जहां हजारों अनुरोध कम समय में सीमित मात्रा में कुछ खरीदने के लिए बमबारी करते हैं ??
हम यह कैसे तय करते हैं कि कौन सा अनुरोध पहले उत्पाद प्राप्त करने के लिए मिलता है और उत्पाद की स्थिति को उपलब्ध से बिक चुके में बदल देता है (सिर्फ एक उदाहरण)?
यहां सामान्य योजना यह है कि संसाधन का दावा करने के लिए प्राप्त होने वाले पहले अनुरोध को यह है (भले ही एक ही समय में कई संसाधन चल रहे हों)। यह हमेशा अनुरोध है कि आपके सर्वर पर पहली बार आया है या नहीं, यह ज्ञात नहीं है, लेकिन यह करीब होगा और उपयोगकर्ता समुदाय को यह जानने की संभावना नहीं है कि क्या यह कुछ मिलीसेकंड में भिन्नता के कारण बंद हो गया है दो अनुरोधों की प्रसंस्करण गति।
आपको यह सुनिश्चित करना होगा कि आपका कोड जो साझा संसाधनों (जैसे डेटाबेस) तक पहुंचता है, समवर्ती के लिए सुरक्षित है और साझा डेटा के बारे में कोई परेशानी नहीं करता है।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।