vivo APISIX के साथ कैसे एकीकृत होता है
November 25, 2022
अवलोकन
मई 2021 से, vivo ने अपने API गेटवे के रूप में Apache APISIX को पेश किया है। vivo में एक साल से अधिक के अभ्यास के बाद, APISIX ने कई तकनीकी और व्यावसायिक समस्याओं को हल किया है और बड़े पैमाने पर उपयोग किया जा रहा है।
APISIX का उपयोग करने से पहले की समस्याएं
-
व्यावसायिक परिदृश्यों और सिस्टम रखरखाव का जटिल प्रबंधन
व्यवसाय की तेजी से वृद्धि के कारण, विभिन्न परिदृश्य और सिस्टम हैं जो उन्हें सेवा प्रदान करते हैं, जिन्हें vivo को एकीकृत तरीके से प्रबंधित करने की आवश्यकता है।
-
डेटा प्लेन और कंट्रोल प्लेन के बीच इंटरैक्शन
vivo जैसी मध्यम और बड़ी कंपनियों के लिए, यह अप्रत्याशित है कि डेटा प्लेन में होने वाली छोटी सी समस्या कंट्रोल प्लेन को प्रभावित कर सकती है।
-
मल्टी-डायमेंशनल संसाधनों के लिए कोई समर्थन नहीं
विविध परियोजनाओं के कारण विभिन्न डोमेन नाम और URL होते हैं। व्यवसाय विभाग को विभिन्न संसाधन आयामों के अनुसार खोज करने की आवश्यकता होती है।
-
समस्याओं का अनियंत्रित प्रभाव
चूंकि vivo की परियोजनाएं जटिल हैं, और समस्याओं का प्रभाव अनियंत्रित होता है। कुछ जटिल प्लगइन्स का उपयोग इसे और बढ़ाता है।
APISIX को NGINX के साथ बदलकर, vivo ने अंततः नीचे दिए गए कई उपलब्धियां हासिल की हैं।
APISIX का उपयोग करने के बाद की उपलब्धियां
-
उच्च उपलब्धता
vivo में APISIX लॉन्च होने के बाद से कोई बड़ी विफलता नहीं हुई है, और सिस्टम की उपलब्धता 99.99% से अधिक है।
-
उच्च प्रदर्शन
महत्वपूर्ण ऑनलाइन ट्रैफ़िक को संभालते हुए और बड़ी संख्या में सेवाएं प्रदान करते हुए, वर्तमान ऑनलाइन फॉरवर्डिंग ट्रैफ़िक एक मिलियन QPS (क्वेरीज़-प्रति-सेकंड) के करीब पहुंच गया है।
-
समृद्ध सुविधाएं
APISIX की समृद्ध सुविधाओं के कारण, APISIX लगभग सभी सामान्य NGINX प्रॉक्सी परिदृश्यों को कवर कर सकता है। vivo की लगभग 50% परियोजनाएं NGINX से APISIX क्लस्टर में माइग्रेट की गई हैं।
-
क्लाउड-नेटिव के निर्माण और विकास का समर्थन
कंटेनरीकरण का समर्थन करने वाले K8s बेयर मेटल ने 10,000 का पैमाना हासिल कर लिया है। लगभग 40% परियोजनाएं बेयर मेटल और वर्चुअल मशीन से K8s कंटेनर प्लेटफॉर्म पर माइग्रेट की गई हैं, जो vivo के कंटेनरीकरण प्रगति का समर्थन और प्रोत्साहन कर रही हैं।
APISIX पर आधारित vivo का सिस्टम डिज़ाइन
आगे, आइए APISIX को अपनाने के बाद vivo के सिस्टम डिज़ाइन को देखें।
APISIX पर कस्टमाइज़्ड आर्किटेक्चर प्रदर्शन

उपरोक्त चित्र से, हम विश्लेषण कर सकते हैं कि vivo ने:
- लेयर 4 और लेयर 7 ट्रैफ़िक गेटवे का निर्माण पूरा कर लिया है, जो APISIX द्वारा समर्थित है
- बेयर मेटल, वर्चुअल मशीन और कंटेनर के ट्रैफ़िक एक्सेस और मिश्रित तैनाती को साकार किया है
- APISIX क्लस्टर प्रबंधन को लागू किया है
- आंतरिक DevOps प्लेटफॉर्म और व्यावसायिक तैनाती सेवाओं को जोड़कर ट्रैफ़िक को तेजी से और स्वचालित रूप से एक्सेस करने की सुविधा प्रदान की है
- मॉनिटरिंग निर्माण में सुधार किया है
कॉन्फ़िगरेशन प्रबंधन और लॉन्चिंग सुधार
व्यावसायिक विभाग की वास्तविक आवश्यकताओं को बेहतर ढंग से पूरा करने के लिए, vivo ने APISIX पर कई अनुकूलन किए हैं। नीचे कुछ ऐसे समायोजन दिए गए हैं, जिनमें कंट्रोल प्लेन परिवर्तन, क्लस्टर अलगाव प्रबंधन और डेटा फॉरवर्डिंग शामिल हैं।
कंट्रोल प्लेन परिवर्तन
पूरी प्रक्रिया इस प्रकार हो सकती है:
A6 परिवर्तन प्लेटफॉर्म में डेटा कॉन्फ़िगर होने के बाद, जानकारी RPC नोटिफ़ाई के माध्यम से ManagerAPI को दी जाएगी, जो vivo द्वारा ओपन-सोर्स APISIX डैशबोर्ड पर आधारित है।
फिर ट्रैफ़िक apisix-agent को भेजा जाएगा। APISIX विशेषाधिकार प्राप्त प्रक्रिया के माध्यम से नियमित रूप से apisix-agent को पोल करता है ताकि बैच में परिवर्तन कार्य प्राप्त कर सके। इसके बाद, विशेषाधिकार प्राप्त प्रक्रिया साझा कतारों के माध्यम से worker को सूचित करती है ताकि मेमोरी में परिवर्तन को साकार किया जा सके।
इसी समय, APISIX apisix-agent को कार्यों के परिणाम के बारे में सूचित करता है और फिर उन्हें ManagerAPI को देता है। इसके अलावा, A6 परिवर्तन प्लेटफॉर्म ManagerAPI को पोल करके कार्य परिणाम प्राप्त कर सकता है।

etcd APISIX का एक मुख्य आकर्षण है, जो कंट्रोल और डेटा प्लेन के स्वतंत्र संचालन की अनुमति देता है। इसकी आर्किटेक्चर की विशिष्टता को ध्यान में रखते हुए, vivo ने उपरोक्त प्रक्रिया में etcd को छोड़ दिया। यहां कुछ कारण दिए गए हैं।
vivo की परियोजनाओं की विविधता के कारण, विभिन्न डोमेन नाम और URL हैं। इसके अलावा, व्यावसायिक विभागों को विभिन्न आयामों के अनुसार क्वेरी करने की आवश्यकता होती है। APISIX की etcd के साथ अनुकूलता के कारण, vivo आसानी से MongoDB जैसे डेटाबेस का उपयोग कर सकता है, जो APISIX के साथ मिलकर काम कर सकते हैं।
इसके अलावा, vivo ने Apache APISIX के साथ संगत होने के लिए नीचे दिए गए योगदान दिए हैं।
-
एजेंट कंपोनेंट का विकास
मई 2021 से, vivo ने Apache APISIX को पेश किया। तकनीकी पृष्ठभूमि और संदर्भ को ध्यान में रखते हुए, vivo को APISIX को अपनाने में आत्मविश्वास नहीं था क्योंकि vivo को OpenResty और Lua का कोई अनुभव नहीं था। इसके अलावा, लॉग संग्रह और मॉनिटरिंग हैंडलिंग जैसे कई नॉन-फॉरवर्डिंग कार्य हैं, जो डेटा प्लेन के प्रबंधन की जटिलता को बढ़ा सकते हैं। परिणामस्वरूप, vivo ने विकास की जटिलता को कम करने के लिए एजेंट कंपोनेंट विकसित किया।
-
डिस्क में डेटा लिखना
सिस्टम को समायोज्य बनाने और डेटा प्लेन को स्वतंत्र रूप से चलाने के लिए, इस प्रकार कंट्रोल प्लेन पर निर्भरता को कम करने के लिए, vivo ने कॉन्फ़िगरेशन फ़ाइल को डिस्क में लिखा। जब APISIX शुरू होता है, तो यह कॉन्फ़िगरेशन सेंटर से पूरी तरह से पुल करने का समर्थन करता है और स्थानीय डिस्क के फ़ाइल डायरेक्टरी से सीधे कॉन्फ़िगरेशन संसाधन प्राप्त करने का भी समर्थन करता है। इस तरह से डेटा की स्वतंत्रता और सिस्टम की मजबूती में काफी सुधार होता है। इसके अलावा, डिस्क पर रखे गए कॉन्फ़िगर किए गए रूट और अपस्ट्रीम जानकारी को समझना बहुत सहज है, जो समस्या निवारण में मददगार है।
-
परिवर्तन कार्य परिणाम को कॉलबैक करना
एक बड़ी कंपनी के रूप में, vivo को यह सुनिश्चित करने की आवश्यकता है कि राउटर और अपस्ट्रीम जैसे संसाधनों में परिवर्तन प्रभावी और सफल हो सकें, और सिस्टम इन परिवर्तनों के विफल होने पर भी त्रुटि की रिपोर्ट कर सके। ACK (स्वीकृति कोड) की ऐसी लॉजिक सुनिश्चित करती है कि एक मशीन पर NGINX वर्कर्स कॉलबैक कर सकें। जब कॉलबैक कार्य सफल होते हैं, तो APISIX पर सभी वर्कर्स संसाधन परिवर्तनों को संबंधित मेमोरी में अपडेट कर देंगे।
क्लस्टर अलगाव प्रबंधन

APISIX का ओपन-सोर्स संस्करण etcd प्रदान करता है ताकि सभी इसे साझा कर सकें। हालांकि, कंपनी की परियोजनाएं जटिल हैं, और समस्याएं अनियंत्रित होती हैं। इसके अलावा, जटिल प्लगइन्स का उपयोग करना अनिवार्य है, जो सिस्टम के प्रदर्शन को प्रभावित करता है।
इसलिए, इसे क्लस्टर अलगाव द्वारा प्रबंधित किया जाता है ताकि APISIX पर क्लस्टर कॉन्फ़िगरेशन के अलगाव को साकार किया जा सके, जो निम्नलिखित कर सकता है:
- फॉल्ट डोमेन को नियंत्रित करें और परियोजनाओं की जटिलता का प्रभावी ढंग से समर्थन करें बिना अन्य परियोजनाओं को प्रभावित किए
- कंटेनर नोड्स के बार-बार बदलने पर APISIX नॉन-फॉरवर्डिंग लेयर के कारण होने वाले लोड को प्रभावी ढंग से कम करें
- हेल्थ चेक के कारण होने वाले लोड प्रभाव को कम करें
HTTPS द्वारा संभाले जाने वाले QPS में वृद्धि
चीन के उद्योग और सूचना प्रौद्योगिकी मंत्रालय की संबंधित आवश्यकताओं के अनुसार, बाहरी नेटवर्क ट्रैफ़िक को HTTPS प्रोटोकॉल के माध्यम से जाना चाहिए। एक TLS-आधारित HTTP एन्क्रिप्शन प्रोटोकॉल के रूप में, HTTPS एन्क्रिप्शन और डिक्रिप्शन प्रक्रिया में CPU पर भारी बोझ डालता है।
जब रूटिंग और अन्य कॉन्फ़िगरेशन समान होते हैं, तो HTTPS द्वारा संभाले जाने वाला ट्रैफ़िक HTTP के ट्रैफ़िक का लगभग 1/8 - 1/10 होता है।
Intel® QAT (क्विकअसिस्ट टेक्नोलॉजी) एक्सेलेरेटर कार्ड को पैच करने के बाद, vivo डिक्रिप्शन हैंडलिंग को QAT एक्सेलेरेटर कार्ड को सौंपता है, जो CPU को मुक्त करता है, इस प्रकार एकल मशीन पर HTTPS द्वारा संभाले जाने वाले QPS में वृद्धि करता है। नीचे दिए गए चित्र से देखा जा सकता है कि एकल मशीन पर HTTPS लोड क्षमता लगभग दोगुनी हो गई है।

vivo कैसे व्यवसायों को APISIX के साथ जोड़ता है
कंटेनरीकरण विकास का समर्थन
कंटेनरीकरण विकास का समर्थन करने के लिए, vivo ने एक K8s इन्ग्रेस कंट्रोलर स्वयं विकसित किया है। नीचे इसके कुछ कार्य दिए गए हैं।
-
vivo के संशोधित एसिंक्रोनस पुश कॉन्फ़िगरेशन परिवर्तन तंत्र के अनुकूल होना
-
APISIX को मल्टी-K8s क्लस्टर इवेंट प्रोसेसिंग नोटिफ़िकेशन करना
-
जटिल परियोजना परिदृश्यों से निपटना जैसे:
-
एक सर्वर पर कई पोर्ट
-
जब अन्य RPC फ्रेमवर्क सर्वर, जैसे Dubbo और gRPC, K8s से जुड़ते हैं, तो परियोजनाओं की कॉन्फ़िगरेशन विशेषताओं के अनुसार APISIX या अन्य फ्रेमवर्क को पोर्ट जानकारी सूचित करने के लिए एकीकृत प्रोसेसिंग लॉजिक की आवश्यकता होती है
- कंपनी के आंतरिक DevOps और अन्य स्वचालन परिदृश्यों की विशेष आवश्यकताओं के अनुकूल होना, तेजी से तैनाती की सुविधा प्रदान करना और ट्रैफ़िक को सक्षम करना
NGINX से APISIX में परियोजनाओं को माइग्रेट करने में मदद करना
Vivo की परियोजनाएं मौजूदा NGINX क्लस्टर पर तैनात हैं और लंबे समय से स्थिर रूप से चल रही हैं। हालांकि, यह परियोजनाओं को गैर-व्यावसायिक कार्यभार और अस्थिरता प्रदान करता है। परिणामस्वरूप, माइग्रेशन करना चुनौतीपूर्ण होता है। तो APISIX में परियोजनाओं को माइग्रेट करने के लिए कैसे प्रोत्साहित करें?
-
सबसे पहले, एक सहयोगी विभाग की परियोजना ढूंढें, व्यावसायिक विभाग को अच्छी तरह से सेवा प्रदान करें ताकि एक बेंचमार्क स्थापित किया जा सके और तकनीकी मार्गदर्शन और प्रशिक्षण प्रदान किया जा सके
-
एक उपयोग में आसान कंट्रोल प्लेन सिस्टम बनाएं ताकि व्यावसायिक पहुंच और व्यावसायिक विभागों के बहु-आयामी प्रबंधन की सुविधा प्रदान की जा सके
-
NGINX कॉन्फ़िगरेशन से APISIX कॉन्फ़िगरेशन में स्वचालित रूपांतरण क्षमता और बुनियादी कॉन्फ़िगरेशन प्रदान करें
APISIX को अपग्रेड करना और इसके ओपन-सोर्स संस्करण का समर्थन करना
APISIX 2.4 संस्करण पर आधारित, vivo ने कुछ समायोजन किए और नया संस्करण जारी किया, जो इस साल Q2 में एक नए संस्करण में अपग्रेड किया गया।
एक ओर, APISIX के मॉड्यूलर आर्किटेक्चर के कारण, vivo के संशोधित Lua कोड को APISIX के उच्च संस्करण की शाखा में एकीकृत करना अपेक्षाकृत आसान है। दूसरी ओर, vivo OpenResty सेक्शन को भी अपग्रेड करता रहता है, लगभग एक संस्करण प्रति वर्ष। चूंकि vivo बहुत सारे PATCH और QAT जैसे उपयोगी कार्यों का उपयोग करता है, इसलिए इस कंपोनेंट को अपग्रेड करना कठिन और श्रमसाध्य है।
NGINX कम्युनिटी के मुफ्त संस्करण की सुविधाएं धीमी गति से अपडेट होती हैं और निष्क्रिय हैं। Vivo यह विचार कर रहा है कि क्या APISIX के साथ संयुक्त रूप से निर्माण करना है। संबंधित सिस्टम परीक्षण करने के लिए आवश्यक मानव संसाधन को कम करने के लिए, vivo ने Robot Framework को अपनाया, जो सिस्टम इंटीग्रेशन परीक्षण के लिए एक सामान्य टेस्ट ऑटोमेशन फ्रेमवर्क है। वे यूनिट टेस्ट कवरेज और TDD (टेस्ट-ड्रिवेन डेवलपमेंट) के विकास मॉडल के लिए संबंधित कंपोनेंट्स को प्रोत्साहित कर रहे हैं।
vivo की भविष्य की योजनाएं
अगले साल, vivo APISIX को एक ट्रैफ़िक गेटवे से एक API गेटवे में विस्तारित करने की योजना बना रहा है, जिसमें दर सीमित करना, प्रमाणीकरण, सर्किट ब्रेकिंग आदि के लाभों का उपयोग किया जाएगा। APISIX को DPDK-NGINX के साथ जोड़ने पर विचार करते हुए, vivo तकनीकी कर्मियों को प्रशिक्षित करेगा और समुदाय स्थापना में शामिल होगा। इसके अलावा, यह बुनियादी कौशल को मजबूत करेगा ताकि ट्रैफ़िक और सेवा प्रशासन के लिए एक अच्छा आधार तैयार किया जा सके।
Apache APISIX के बारे में अधिक जानने के लिए आपका स्वागत है।
आप हमसे https://api7.ai/contact पर संपर्क कर सकते हैं।