API गेटवे में मल्टी-लेयर कैशिंग से उच्च ट्रैफिक की चुनौतियों का समाधान
January 26, 2024
आधुनिक विकास में API के उपयोग के बढ़ने के साथ, एक कुशल और विश्वसनीय API गेटवे की मांग भी बढ़ गई है। API गेटवे सभी आने वाले API अनुरोधों के लिए एकमात्र प्रवेश बिंदु के रूप में कार्य करता है, जिससे उन्हें विभिन्न माइक्रोसर्विसेज में कुशलतापूर्वक प्रबंधित और वितरित किया जा सकता है। हालांकि API गेटवे कई लाभ प्रदान करता है, लेकिन उच्च-ट्रैफ़िक परिदृश्यों में इसके सामने चुनौतियाँ आ सकती हैं।
APISIX का कैशिंग मैकेनिज्म
निम्नलिखित फ्लोचार्ट APISIX द्वारा उपयोग किए जाने वाले कुशल कैशिंग मैकेनिज्म को दर्शाता है, जो विलंबता को कम करने और प्रदर्शन को सुधारने के लिए डिज़ाइन किया गया है। APISIX प्रतिक्रियाओं को कई स्तरों पर कैश करके, अपस्ट्रीम सर्वरों पर लोड को प्रभावी ढंग से कम कर सकता है और क्लाइंट्स के लिए अधिक प्रतिक्रियाशील अनुभव प्रदान कर सकता है।
क्लाइंट <-- HTTP अनुरोध --> APISIX वर्कर (प्रक्रिया स्तर पर LRU कैश की जाँच) (कैश हिट नहीं) (डेटा प्लेन स्तर पर साझा DICT कैश की जाँच) (लॉक प्राप्त नहीं) (लॉक प्राप्त करें, कैश की जाँच करें) (कैश हिट) (कैश्ड प्रतिक्रिया वापस करें, लॉक रिलीज़ करें) (कैश मिस) (Redis से प्रश्न करें) (Mutex प्राप्त करें) (Redis से प्रश्न करें) (कैश मिस) (अपस्ट्रीम से प्रतिक्रिया प्राप्त करें) (साझा DICT कैश में प्रतिक्रिया कैश करें) (क्लाइंट को प्रतिक्रिया वापस करें) (कैश हिट) (प्रतिक्रिया को साझा DICT कैश में कॉपी करें) (क्लाइंट को कैश्ड प्रतिक्रिया वापस करें) (Redis Mutex रिलीज़ करें) (लॉक रिलीज़ करें) (कैश हिट) (कैश्ड प्रतिक्रिया वापस करें)
LRU: APISIX सिंगल वर्कर स्तर पर पहली-परत कैशिंग
APISIX के वर्कर स्तर पर LRU (Least Recently Used) कैश एक महत्वपूर्ण घटक है जो प्रत्येक कार्य प्रक्रिया में अक्सर एक्सेस किए जाने वाले डेटा को कैश करने के लिए जिम्मेदार है। यह कैश सिस्टम LRU एविक्शन एल्गोरिदम का उपयोग करता है, जो डेटा को कुशलतापूर्वक संग्रहीत और पुनर्प्राप्त करते हुए सबसे कम हाल में उपयोग किए गए डेटा को प्राथमिकता देता है। अक्सर एक्सेस किए जाने वाले डेटा को मेमोरी में कैश करके, APISIX बाहरी डेटा स्रोतों, जैसे रूटिंग नियम या प्रमाणीकरण टोकन, को क्वेरी करने में विलंबता और लागत को काफी कम कर देता है, जिससे सिस्टम की प्रतिक्रिया गति बढ़ जाती है।
इस बुद्धिमान कैशिंग मैकेनिज्म के माध्यम से, APISIX बड़ी मात्रा में अनुरोधों को संभालते समय सिस्टम संसाधनों का कुशलतापूर्वक उपयोग करता है, जिससे समग्र सिस्टम प्रदर्शन और स्थिरता में सुधार होता है। APISIX अपने उन्नत LRU कैश के साथ डेवलपर्स को एक विश्वसनीय और कुशल API गेटवे समाधान प्रदान करता है, जो बाहरी सेवाओं के साथ सहज संचार सुविधाजनक बनाता है।
साझा Dict: APISIX नोड स्तर पर दूसरी-परत कैशिंग
एक APISIX नोड में सभी कार्य प्रक्रियाओं के बीच साझा मेमोरी डिक्शनरी (साझा dict) कैश। यह सामान्यतः एक्सेस किए जाने वाले डेटा, जैसे API प्रतिक्रिया डेटा या प्रतिक्रिया हेडर, के लिए एक केंद्रीकृत कैश के रूप में कार्य करता है। कई वर्कर प्रक्रियाएँ एक साथ इस कैश को एक्सेस और अपडेट कर सकती हैं ताकि डेटा स्थिरता सुनिश्चित हो और अनावश्यक डेटा डुप्लिकेशन से बचा जा सके।
यह साझा मेमोरी डिक्शनरी कैश उत्कृष्ट प्रदर्शन प्रदर्शित करता है, जो मेमोरी लॉकिंग और कुशल डेटा संरचनाओं जैसी उन्नत तकनीकों का लाभ उठाता है। यह इसे प्रतिस्पर्धा को कम करने और थ्रूपुट को अधिकतम करने के लक्ष्य को प्राप्त करने में सक्षम बनाता है। मेमोरी लॉकिंग के माध्यम से, यह एक साथ पढ़ने और लिखने की प्रक्रियाओं के दौरान स्थिरता सुनिश्चित करते हुए समवर्ती एक्सेस को प्रभावी ढंग से नियंत्रित करता है। कुशल डेटा संरचना डिज़ाइन साझा मेमोरी डिक्शनरी कैश को डेटा पुनर्प्राप्ति और अपडेट ऑपरेशन को तेजी से निष्पादित करने में सक्षम बनाता है, जिससे समग्र प्रदर्शन में सुधार होता है।
साझा मेमोरी डिक्शनरी कैश का परिचय APISIX के डेटा प्लेन में अधिक प्रदर्शन और स्केलेबिलिटी प्रदान करता है, जो डेवलपर्स को बड़े पैमाने पर डेटा और अनुरोधों को संभालने में उत्कृष्टता प्रदान करने के लिए एक विश्वसनीय उपकरण प्रदान करता है।
APISIX मल्टी-लेयर कैशिंग मैकेनिज्म
नीचे दिया गया चित्र APISIX के मल्टी-लेयर कैशिंग मैकेनिज्म को दर्शाता है, जो एक फ़नल के सिद्धांत के समान है। विशेष रूप से, L1 कैश वर्कर के भीतर एक LRU कैश का उपयोग करता है, L2 कैश कई वर्कर्स के बीच एक साझा dict है, और L3 कैश API गेटवे के बाहर एक Redis डेटाबेस है।
यहाँ एक उदाहरण है: जब 10,000 उपयोगकर्ता अनुरोध APISIX के माध्यम से डेटा क्वेरी करते हैं, तो यह मानते हुए कि L1 कैश की हिट दर 90% है, 9000 अनुरोध सीधे वापस कर दिए जाएंगे। शेष 1000 अनुरोध L2 कैश को क्वेरी करेंगे। यह मानते हुए कि L2 कैश की हिट दर भी 90% है, तो 100 अनुरोध L3 कैश, Redis को क्वेरी करेंगे। इन 100 अनुरोधों के Redis को क्वेरी करने से पहले, वे पहले म्यूटेक्स (परस्पर बहिष्करण) को क्वेरी करेंगे ताकि यह सुनिश्चित हो सके कि एक समय में केवल एक अनुरोध Redis को क्वेरी करे, जिससे डॉगपाइल प्रभाव से बचा जा सके।

निष्कर्ष
मल्टी-लेयर कैशिंग की क्षमताओं का लाभ उठाकर, APISIX अधिकांश क्लाइंट अनुरोधों को बाहरी डेटा संग्रहण घटकों जैसे Redis या Postgres को बार-बार क्वेरी किए बिना कुशलतापूर्वक संभालता है। यह न केवल समग्र विलंबता को काफी कम करता है, बल्कि API गेटवे के थ्रूपुट को भी बढ़ाता है, जो व्यवसायों को बाहरी सेवाओं के साथ संचार को सरल बनाने के लिए एक कुशल और मजबूत समाधान प्रदान करता है। ऑप्टिमाइज़ेशन डिज़ाइन सिस्टम की मजबूती सुनिश्चित करता है, जिससे APISIX उच्च-समवर्ती परिदृश्यों को लचीले ढंग से संभाल सकता है और इंजीनियर्स के लिए एक अधिक विश्वसनीय और उच्च-प्रदर्शन विकास वातावरण बना सकता है।