पहली बात यह समझना होगा कि कैसे require
NodeJS में काम करता है मेरा सुझाव है कि आप इसे लेख
यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं।
अब, एक बार जब आपको अपने कनेक्शन की आवश्यकता हो जाती है, तो आपके पास यह हमेशा के लिए होता है और इसकी फिर से आवश्यकता नहीं होगी। यह आप जो खोज रहे हैं उससे मेल खाता है क्योंकि आप हर बार एक नया कनेक्शन बनाकर अपने डेटाबेस को अभिभूत नहीं करना चाहते हैं।
लेकिन, एक समस्या है...
लैम्ब्डा कोल्ड स्टार्ट
जब भी आप पहली बार लैम्ब्डा फंक्शन को इनवाइट करते हैं, तो यह आपके फंक्शन के साथ एक कंटेनर को स्पिन कर देगा और इसे लगभग 5 मिनट तक जीवित रखेगा। यह बहुत संभव है (हालांकि गारंटी नहीं है) कि जब तक आप एक बार में 1 अनुरोध कर रहे हैं, तब तक आप हर बार एक ही कंटेनर से टकराएंगे। लेकिन क्या होगा यदि आपके पास एक ही समय में 2 अनुरोध हैं? फिर एक और कंटेनर पिछले, पहले से ही गर्म किए गए कंटेनर के समानांतर में काता जाएगा। आपने अभी-अभी अपने डेटाबेस पर एक और कनेक्शन बनाया है और अब आपके पास 2 कंटेनर हैं। अब, अनुमान करें कि यदि आपके पास 3 समवर्ती अनुरोध हैं तो क्या होगा? हां! एक और कंटेनर, जो एक और डीबी कनेक्शन के बराबर है।
जब तक आपके लैम्ब्डा फ़ंक्शंस में नए अनुरोध हैं, डिफ़ॉल्ट रूप से, वे मांग को पूरा करने के लिए स्केल करेंगे (आप इसे कंसोल में कॉन्फ़िगर कर सकते हैं ताकि निष्पादन को जितने चाहें उतने समवर्ती निष्पादन तक सीमित कर सकें - अपनी खाता सीमाओं का सम्मान करते हुए)पी>
आप केवल आवश्यकता . द्वारा सुरक्षित रूप से यह सुनिश्चित नहीं कर सकते कि आपके पास अपने डेटाबेस से निश्चित मात्रा में कनेक्शन हैं फ़ंक्शन के आमंत्रण पर आपका कोड। अच्छी बात यह है कि इसमें आपकी कोई गलती नहीं है। लैम्ब्डा के कार्य इस प्रकार व्यवहार करते हैं।
...एक और तरीका है
वास्तविक कैशिंग सिस्टम में अपने इच्छित डेटा को कैश करने के लिए, जैसे ElasticCache , उदाहरण के लिए। तब आप एक लैम्ब्डा फ़ंक्शन को CloudWatch इवेंटद्वारा ट्रिगर कर सकते थे। ए> जो समय की एक निश्चित आवृत्ति में चलता है। यह फ़ंक्शन तब आपके डीबी से पूछताछ करेगा और परिणामों को आपके बाहरी कैश में संग्रहीत करेगा। इस तरह आप सुनिश्चित करते हैं कि आपका डीबी कनेक्शन एक समय में केवल एक लैम्ब्डा द्वारा खोला गया है, क्योंकि यह क्लाउडवॉच इवेंट का सम्मान करेगा, जो प्रति ट्रिगर केवल एक बार चलने के लिए निकलता है।
संपादित करें :ओपी द्वारा टिप्पणी अनुभागों में एक लिंक भेजे जाने के बाद, मैंने यह स्पष्ट करने के लिए कुछ और जानकारी जोड़ने का निर्णय लिया है कि उल्लिखित लेख क्या कहना चाहता है
लेख से:
और ठीक यही आप कर रहे हैं। और यह काम करता है! लेकिन समस्या यह है कि यदि आपके पास एक ही समय में एन कनेक्शन (लैम्ब्डा अनुरोध) हैं। यदि आप कोई सीमा निर्धारित नहीं करते हैं, तो डिफ़ॉल्ट रूप से, अधिकतम 1000 लैम्ब्डा फ़ंक्शन समवर्ती रूप से काटे जा सकते हैं। अब, यदि आप अगले 5 मिनट में एक साथ 1000 अन्य अनुरोध करते हैं, तो यह बहुत संभव है कि आप कोई नया कनेक्शन नहीं खोलेंगे, क्योंकि वे पहले से ही पिछले आमंत्रणों पर खोले जा चुके हैं और कंटेनर अभी भी जीवित हैं।