xRPC जारी किया जाएगा, APISIX Ecosystem के बारे में अधिक जानकारी प्राप्त करें
API7.ai
January 21, 2021
जैसे-जैसे व्यावसायिक परिदृश्य और आवश्यकताएं अधिक जटिल और विविध होती जा रही हैं, अधिक से अधिक मानक और प्रोटोकॉल सामने आ रहे हैं, और Apache APISIX, Apache Foundation के एक शीर्ष ओपन सोर्स प्रोजेक्ट के रूप में, संबंधित पारिस्थितिकी पहलुओं के विस्तार में सक्रिय रूप से भाग ले रहा है और इसे बढ़ावा दे रहा है।
इस लेख में, हम आपको Apache APISIX के आगामी xRPC फ्रेमवर्क और बहुभाषी प्लगइन्स के उदाहरण मल्टी-प्रोटोकॉल प्रॉक्सी और बहुभाषी समर्थन के दो दृष्टिकोणों से प्रस्तुत करेंगे।
मल्टीप्रोटोकॉल प्रॉक्सी
Apache APISIX में, प्रत्येक अनुरोध एक Route ऑब्जेक्ट से संबंधित होता है। Apache APISIX के लिए वर्तमान में दो मुख्य प्रॉक्सी परिदृश्य हैं।

पहला है HTTP प्रोटोकॉल प्रॉक्सी, जो वर्तमान में APISIX में सबसे अधिक उपयोग किया जाने वाला अनुरोध प्रॉक्सी है। HTTP प्रोटोकॉल प्रॉक्सी के आधार पर, Apache APISIX ने वर्तमान में दर्जनों ट्रैफिक प्रबंधन क्षमताओं को लागू किया है, जैसे कि सूक्ष्म प्रवाह नियंत्रण, सुरक्षा और प्रेक्षणीयता।
दूसरा है TCP और UDP आधारित डायनामिक प्रोटोकॉल प्रॉक्सी और लोड बैलेंसिंग, जो सबसे बुनियादी ट्रैफिक प्रवेश क्षमताएं और लिंक-स्तरीय लॉगिंग क्षमताएं प्रदान करता है। यह प्रॉक्सी मॉडल किसी भी TCP/UDP प्रोटोकॉल आधारित अनुरोधों को प्रॉक्सी कर सकता है जैसे MySQL, Redis, Mongo या DNS। हालांकि, चूंकि यह TCP/UDP आधारित प्रॉक्सी है जिसमें ऊपरी एप्लिकेशन लेयर प्रोटोकॉल नहीं हैं, इसलिए यह केवल चतुष्कोण के बारे में कुछ बुनियादी जानकारी प्राप्त कर सकता है, इसलिए यह विस्तारशीलता के मामले में थोड़ा कमजोर है।
xRPC क्यों?
Stream Route की प्रोटोकॉल प्रॉक्सी में सीमाओं के कारण, और हमारी इच्छा APISIX पर अधिक एप्लिकेशन लेयर प्रोटोकॉल का समर्थन करने की है ताकि अधिक उपयोगकर्ताओं और एप्लिकेशन परिदृश्यों की सेवा की जा सके, xRPC फ्रेमवर्क का जन्म हुआ।
xRPC फ्रेमवर्क प्रोटोकॉल क्षमताओं को विस्तारित करना बहुत आसान बनाता है, चाहे वह विशिष्ट या निजी डेटा प्रोटोकॉल हो, सटीक ग्रैन्युलैरिटी और HTTP प्रोटोकॉल प्रॉक्सी के समान उच्च-स्तरीय 7-स्तरीय नियंत्रण, जैसे अनुरोध-स्तरीय प्रेक्षणीयता, उन्नत पहुंच नियंत्रण, और प्रॉक्सी नीतियां।
xRPC क्या है?
xRPC का शाब्दिक अर्थ है कि X एक प्रोटोकॉल संसाधन का अमूर्त प्रतिनिधित्व है। और RPC वह है जिसे हम गेटवे से गुजरने वाले सभी संसाधनों को एक प्रक्रिया प्रेषण के रूप में मानते हैं, यानी यह एक प्रोटोकॉल विस्तार फ्रेमवर्क है। इसलिए स्थिति के संदर्भ में, xRPC एक आधार फ्रेमवर्क है न कि किसी विशिष्ट प्रोटोकॉल का कार्यान्वयन।

जैसा कि आप उपरोक्त आर्किटेक्चर से देख सकते हैं, xRPC APISIX Core एक्सटेंशन पर आधारित एक फ्रेमवर्क है। इस फ्रेमवर्क के ऊपर, उपयोगकर्ता विभिन्न एप्लिकेशन लेयर प्रोटोकॉल को लागू कर सकते हैं, जैसे Redis, MySQL, Mongo और Postgres। विभिन्न प्रोटोकॉल के ऊपर, आप कुछ सामान्य कारकों को अमूर्त कर सकते हैं और संबंधित प्लगइन क्षमताओं को लागू कर सकते हैं ताकि विभिन्न प्रोटोकॉल इन क्षमताओं को साझा कर सकें।
इसलिए xRPC की मुख्य भूमिका को इस प्रकार संक्षेपित किया जा सकता है: मानकीकृत एप्लिकेशन लेयर प्रोटोकॉल तक पहुंच प्रदान करना, क्रॉस-प्रोटोकॉल क्षमता साझा करने का समर्थन करना, और उपयोगकर्ताओं को कस्टम प्रोटोकॉल विस्तार की क्षमता प्रदान करना।
नमूना एप्लिकेशन परिदृश्य
xRPC प्रोटोकॉल फ्रेमवर्क के साथ, यह किन परिदृश्यों को संबोधित कर सकता है? यहां कुछ उदाहरण दिए गए हैं।
- उदाहरण 1: Redis के पुराने संस्करणों में TLS का समर्थन नहीं है। यदि हमारे सिस्टम में Redis के कई संस्करण हैं, और हम उत्पादन में Redis को कुछ कारणों से अपग्रेड नहीं कर सकते हैं, लेकिन हमें TLS क्षमता जोड़ने की आवश्यकता है। इस स्थिति में, हम xPRC आधारित Redis प्रोटोकॉल का उपयोग करके उपरोक्त स्थिति को हल कर सकते हैं।
- उदाहरण 2: जब हम कुछ IPs या कॉलर्स की आवृत्ति को सीमित करना चाहते हैं और प्रत्येक कॉल स्रोत की आवृत्ति को विज़ुअलाइज़ करना चाहते हैं, जिसे Redis समर्थित नहीं करता है। यह xRPC द्वारा विस्तारित Redis प्रोटोकॉल का उपयोग करके पूरी तरह से हल हो जाता है।
- उदाहरण 3: यदि आप MySQL का उपयोग करके अस्थायी रूप से धीमी क्वेरी फ़ंक्शन को सक्षम करना चाहते हैं, तो आपको केवल MySQL प्रोटोकॉल तक पहुंचने और APISIX में संबंधित नीति को कॉन्फ़िगर करने की आवश्यकता है, जो आपको इंस्टेंस मशीन पर लॉग इन करने की थकाऊ प्रक्रिया से बचाता है।
बेशक, ऐसे कई समान एप्लिकेशन परिदृश्य हैं, और हम आशा करते हैं कि सुविधा के रिलीज़ होने के बाद, आप वास्तविक एप्लिकेशन में अधिक अनुभव और अभ्यास कर सकेंगे। xPRC को आमंत्रित करने की प्रक्रिया निम्नलिखित चित्र में दिखाई गई है।

एक बार अपस्ट्रीम सेवाओं को Apache APISIX द्वारा संभाल लिया जाता है, तो विभिन्न अपस्ट्रीम एप्लिकेशन सेवाओं को एकीकृत रूप से प्रबंधित किया जा सकता है। लॉगिंग, मॉनिटरिंग, सुरक्षा, और समस्या निवारण जैसे कार्य सभी एक मानकीकृत नीति सेट के माध्यम से पूरे किए जा सकते हैं।
नियोजित कार्यान्वयन चरण
Apache APISIX xRPC फ्रेमवर्क का वर्तमान डिज़ाइन शुरू में 5 चरणों में विभाजित है।

- चरण 1: डेटा पढ़ें और प्रोटोकॉल डिकोड करें।
- चरण 2: पहुंच चरण। प्लगइन पहुंच फ़ंक्शन प्रदान करें, जो सुरक्षा, प्रवाह नियंत्रण और पहुंच की मांग परिदृश्यों को पूरा कर सकता है।
- चरण 3: प्रॉक्सी डेटा फॉरवर्डिंग और लोड बैलेंसिंग। कस्टम लोड बैलेंसिंग नीतियों और एल्गोरिदम के लिए पहुंच समर्थन प्रदान करें।
- चरण 4: डेटा भेजें और प्रोटोकॉल एनकोड करें।
- चरण 5: लॉगिंग चरण। लॉगिंग और लॉगिंग आवश्यकताओं के परिदृश्यों को पूरा करने के लिए प्लगइन पहुंच प्रदान करें।
बहुभाषी पारिस्थितिकी
बढ़ती हुई समृद्ध और बड़ी कंप्यूटिंग भाषा आधार को पूरा करने के लिए, बहुभाषी वातावरण के लिए कोड समर्थन बनाना भविष्य की तकनीकी विकास से निपटने के लिए पहली सीमा बन गया है। Apache APISIX ने भी बहुभाषी विकास के मार्ग पर बहुत सारे अन्वेषण और अभ्यास किए हैं।
उदाहरण के लिए, हाल ही में इसने WebAssembly के लिए समर्थन लागू किया है। विवरण और सुविधाओं के लिए, कृपया लेख "Apache APISIX Embraces WASM Ecology" देखें। बेशक, Apache APISIX में WASM के लिए समर्थन अभी भी प्रायोगिक है, और हम भविष्य में WASM के लिए समर्थन को और बेहतर बनाने का प्रयास करेंगे। यदि आप इस प्रोजेक्ट में रुचि रखते हैं, तो कृपया wasm-nginx-module प्रोजेक्ट में योगदान करने के लिए स्वतंत्र महसूस करें।
इस बीच, Apache APISIX ने WASM समर्थन लागू होने से पहले ही "xPluginRunner बहुभाषी प्लगइन रनटाइम" के माध्यम से कई विकास भाषाओं का समर्थन किया है। यानी, APISIX प्लगइन्स विकसित करते समय, उपयोगकर्ता न केवल Lua कोड के साथ, जो APISIX द्वारा मूल रूप से समर्थित है, बल्कि अपनी परिचित भाषाओं जैसे Go, Java और Python के साथ APISIX प्लगइन्स लिख और विस्तारित कर सकते हैं।
xPluginRunner

xPluginRunner का कार्यान्वयन उपरोक्त चित्र में दिखाया गया है। संपूर्ण संचार प्रक्रिया "पहले" और "बाद में" बिल्ट-इन प्लगइन्स के निष्पादन के बाद, APISIX प्रत्येक भाषा के प्लगइन रनटाइम को स्थानीय RPC अनुरोध शुरू करेगा। प्लगइन रनर में, प्रत्येक प्लगइन के भीतर गणना और नीति प्रसंस्करण लागू किया जाता है, और अंत में परिणाम APISIX को प्रतिक्रिया के आधार पर आगे के निर्णय लेने के लिए प्रतिक्रिया दी जाती है।
xPluginRunner Apache APISIX के साथ संचार के लिए एक पुल के रूप में कार्य करता है, और मुख्य रूप से निजी डेटा प्रोटोकॉल के पार्सिंग और RPC संदेशों के एनकैप्सुलेशन और डीकैप्सुलेशन को लागू करता है।
वर्तमान में, Apache APISIX xPluginRunner समाधान एक अपेक्षाकृत स्थिर चरण में है, और हम समुदाय प्रतिक्रिया से जानते हैं कि कुछ उद्यमों ने इसे उत्पादन वातावरण में आज़माना शुरू कर दिया है। यदि आप इस प्रोजेक्ट में रुचि रखते हैं, तो आप भी विभिन्न विकास भाषा प्लगइन प्रोजेक्ट्स में भाग लेने के लिए स्वागत करते हैं।
अंत में, हम आपको एक सरल Java उदाहरण के साथ दिखाएंगे कि Java Plugin Runner के आधार पर APISIX प्लगइन्स कैसे विकसित करें।
Java Plugin Runner उदाहरण
सबसे पहले, प्लगइन विकसित करते समय, हमें PluginFilter का इंटरफ़ेस लागू करने की आवश्यकता है। इंटरफ़ेस में name मेथड मुख्य रूप से प्लगइन नाम की पहचान और निष्कर्षण के लिए उपयोग की जाती है, और filter मेथड अनुरोध को फ़िल्टर करने के लिए उपयोग की जाती है (यानी, प्लगइन बॉडी लॉजिक को निष्पादित करें)।

एक अतिरिक्त बिंदु जिस पर ध्यान देना है वह यह है कि उपरोक्त कोड में दिखाई देने वाले request और response पैरामीटर्स में Runner में निश्चित लॉजिक होती है (सभी Runners पर लागू):
- यदि आप अनुरोध को आगे भेजना चाहते हैं और केवल कुछ नीति सेटिंग्स करना चाहते हैं (जैसे अनुरोध पैरामीटर्स, हेडर्स आदि को पुनः लिखना), तो आप केवल
requestऑब्जेक्ट को मैनिपुलेट कर सकते हैं। - यदि आप अनुरोध को समाप्त करना चाहते हैं, तो आप इसे
responseऑब्जेक्ट के साथ कर सकते हैं (जैसे प्रतिक्रिया बॉडी, प्रतिक्रिया हेडर्स, स्टेटस कोड आदि सेट करें)।
APISIX वर्तमान अनुरोध को समाप्त कर देगा जैसे ही यह महसूस करेगा कि Runner में response ऑब्जेक्ट को मैनिपुलेट किया गया है।
एक बार प्लगइन विकसित हो जाने के बाद, APISIX में एप्लिकेशन का अभ्यास करने का समय आता है।
सबसे पहले, प्रोजेक्ट में Runner और प्लगइन्स को jar पैकेज में संकलित करें और jar पैकेज के पूर्ण पथ को मुख्य APISIX कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित तरीके से कॉन्फ़िगर करें।

अंत में, Apache APISIX को पुनः आरंभ करें और आप रूटिंग और प्लगइन कॉन्फ़िगरेशन और अनुरोध सत्यापन सत्र के लिए तैयार हैं।

सारांश
यह लेख आपको Apache APISIX के आगामी xRPC फ्रेमवर्क और संबंधित विवरण, साथ ही Apache APISIX के बहुभाषी विकास समर्थन में विस्तृत प्रदर्शन प्रस्तुत करता है।
लेख में Apache APISIX के बहुभाषी विकास समर्थन के विवरण भी दिखाए गए हैं। यह Apache APISIX के पारिस्थितिकी-उन्मुख प्रयासों को मल्टीप्रोटोकॉल प्रॉक्सी और बहुभाषी समर्थन दोनों दृष्टिकोणों से दिखाता है।
कृपया GitHub Discussions में चर्चा शुरू करने या मेलिंग लिस्ट के माध्यम से संचार करने के लिए स्वतंत्र महसूस करें।