Tencent में Apache APISIX के साथ API Gateway का अभ्यास

Fei Han

May 24, 2021

Case Study

एपीआई गेटवे क्या है?

पारंपरिक आर्किटेक्चर

एपीआई गेटवे के साथ एकीकरण करने से पहले, हमारे पास कुछ सामान्य कार्यक्षमताओं को पुन: उपयोग करने के कुछ तरीके हैं, जैसे:

  • सुरक्षा: प्रमाणीकरण, अधिकार प्रबंधन, एंटी-रीप्ले, एंटी-टैम्परिंग, एंटी-डीडीओएस, आदि।
  • विश्वसनीयता: सेवा गिरावट, फ्यूजिंग, ट्रैफिक लिमिटिंग, आदि।

पारंपरिक आर्किटेक्चर के तहत, इस मामले से निपटने का सबसे आम तरीका है कि उन्हें एक सेवा फ्रेमवर्क में रखा जाए और एओपी के माध्यम से उन्हें लागू किया जाए, जैसा कि निम्नलिखित आर्किटेक्चर डायग्राम में दिखाया गया है:

पारंपरिक आर्किटेक्चर

पारंपरिक आर्किटेक्चर डायग्राम में निम्नलिखित मॉड्यूल हैं।

  • बैकएंड: बैकएंड सेवाएं
  • एओपी: फ्रेमवर्क द्वारा ले जाया गया एओपी लेयरिंग;
  • एसडी: सेवा केंद्र, आंतरिक सेवा खोज के लिए उपयोग किया जाता है। क्लाउड-नेटिव टेक्नोलॉजी में, हम अक्सर इस घटक को प्रतिस्थापित करने के लिए सेवा का उपयोग करते हैं;
  • एलबी: लोड बैलेंसर, हम इसे नेटवर्क सीमा पर बाहरी ट्रैफिक के प्रवेश बिंदु के रूप में उपयोग करते हैं।

यह प्रकार का आर्किटेक्चर पहले के वर्षों के डिजाइन में व्यापक था, जिसने कई व्यापक और व्यापक सेवा फ्रेमवर्क को जन्म दिया, जैसे डब्बो, स्प्रिंगक्लाउड, आदि, और हम पाएंगे कि उनमें से अधिकतर में कई समान विशेषताएं हैं।

इस आर्किटेक्चर का लाभ यह है कि अपस्ट्रीम और डाउनस्ट्रीम संबंध अधिक सुलभ और स्पष्ट होते हैं, और यह नेटवर्क ट्रांसमिशन में एक फॉरवर्डिंग को कम करता है। लेकिन उनके नुकसान भी स्पष्ट हैं:

  • मानक विशेषताएं व्यावसायिक सेवा अपडेट को मजबूर करती हैं: चूंकि कोड संदर्भों का उपयोग किया जाता है, हमें विशेषताओं को प्रभावी बनाने के लिए व्यावसायिक सेवाओं को पुन: संकलित करना होगा। कुछ टीमें जो रोलिंग रिलीज प्राप्त नहीं करती हैं, उन्हें व्यावसायिक समय के दौरान रिलीज करना होगा।
  • संस्करण प्रबंधन करना मुश्किल: चूंकि हम हर बार रिलीज करने पर सभी सेवाओं को नवीनतम संस्करण में अपग्रेड नहीं कर सकते हैं, इसलिए कुछ समय बाद, विभिन्न सेवाओं का प्रदर्शन असंगत हो जाएगा।

क्यों नहीं उन समान कार्यों को एक अलग सेवा में रखा जाए, जिसे अलग से अपग्रेड या बनाए रखा जा सके?

गेटवे मोड

गेटवे मोड

पारंपरिक आर्किटेक्चर की तुलना में, हम बैकएंड सेवाओं और एलबी के बीच एक अतिरिक्त घटक देख सकते हैं: गेटवे।

एक गेटवे में आमतौर पर कई मानक और पुन: उपयोग योग्य विशेषताएं होती हैं, जैसे प्रमाणीकरण, ट्रैफिक प्रबंधन, आदि। निम्नलिखित लाभ हैं जो हम प्राप्त कर सकते हैं:

  • गेटवे सिस्टम पर एक निर्भर घटक है, और हमारे पास एक बेहतर रखरखाव अनुभव हो सकता है।
  • गेटवे भाषा-स्वतंत्र है।

हालांकि, गेटवे मोड के अपने नुकसान भी हैं:

  • क्योंकि हम ट्रैफिक को पहले गेटवे पर प्रॉक्सी करते हैं, हमारे पास एक अतिरिक्त फॉरवर्डिंग और उच्च विलंबता होती है। इससे समस्याओं का निवारण करने की जटिलता बढ़ जाएगी।
  • यदि गेटवे सही ढंग से काम नहीं करता है, तो यह पूरे सिस्टम के लिए एक बाधा बन सकता है।

गेटवे मॉडल के लाभ और नुकसान को संतुलित करना तकनीकी टीम के लिए एक चुनौती है। आइए देखें कि टेनसेंट ओटीम एपाचे एपीआईएसआईएक्स के साथ कैसे काम करता है।

परिचय

ओटीम

टेनसेंट का ओटीम टीमों का एक समूह है, और हर टीम एक या कई तकनीकी उत्पादों को बनाए रखती है। उनका उद्देश्य आंतरिक सिस्टम के लिए एक स्थिर लेकिन मजबूत मिड-प्लेटफॉर्म बनाना है। एक ओटीम टेनसेंट के आंतरिक एपाचे एपीआईएसआईएक्स कस्टमाइजेशन डिस्ट्रीब्यूशन का समर्थन करता है।

कंपनी के भीतर डुप्लिकेट व्हील्स को एकीकृत करने और तकनीकी मध्यभूमि को डूबाने के लिए। टेनसेंट ने एक ही प्रकृति के कई तकनीकी उत्पादों को एक ही ओटीम में रखा, रखरखाव स्टाफ को एकीकृत किया और उन्हें एक साथ फायर किया, ताकि वे धीरे-धीरे एक बड़े और व्यापक उत्पाद में विलय हो सकें, जो ओटीम है।

कुछ ओटीम के पास उनके अंतर्गत एक दर्जन से अधिक उत्पाद हैं, जबकि अन्य के पास केवल एक ही है। उदाहरण के लिए, जहां एपाचे एपीआईएसआईएक्स स्थित है, उस ओटीम में केवल एक उत्पाद है, एपाचे एपीआईएसआईएक्स। इस ओटीम का मूल उद्देश्य टेनसेंट के भीतर एपाचे एपीआईएसआईएक्स के कस्टमाइजेशन विशेषताओं को बनाए रखना है।

एपाचे एपीआईएसआईएक्स

एपाचे एपीआईएसआईएक्स एपाचे सॉफ्टवेयर फाउंडेशन से एक टॉप-लेवल प्रोजेक्ट है, और यहां कुछ मुख्य बिंदु हैं:

  • एपाचे एपीआईएसआईएक्स एक क्लाउड-नेटिव, डायनामिक एपीआई गेटवे है जो ओपनरेस्टी पर आधारित है, जिसमें कोंग की तुलना में उच्च रूटिंग प्रदर्शन है।
  • एपाचे एपीआईएसआईएक्स लोड बैलेंसिंग, डायनामिक अपस्ट्रीम, कैनरी रिलीज, सर्किट ब्रेकिंग, प्रमाणीकरण, ऑब्जर्वेबिलिटी, आदि जैसी समृद्ध ट्रैफिक प्रबंधन विशेषताएं प्रदान करता है।
  • एपाचे एपीआईएसआईएक्स पारंपरिक उत्तर-दक्षिण ट्रैफिक को संभालने में अच्छा है, साथ ही सेवाओं के बीच पूर्व-पश्चिम ट्रैफिक को भी। इसे k8s इन्ग्रेस कंट्रोलर के रूप में भी उपयोग किया जा सकता है।
  • एपाचे एपीआईएसआईएक्स डिफ़ॉल्ट रूप से ETCD को कॉन्फ़िगरेशन केंद्र के रूप में उपयोग करता है, जो सेकंडों में कॉन्फ़िगरेशन को अपडेट कर सकता है।
  • एपाचे एपीआईएसआईएक्स एपाचे सॉफ्टवेयर फाउंडेशन से स्नातक होता है और केवल कुछ महीनों में ही।

टेनसेंट ओटीम की परिचालन रणनीति

ओटीम परिचालन रणनीति

उपरोक्त डायग्राम दिखाता है कि ओटीम एपाचे एपीआईएसआईएक्स के समुदाय के साथ कैसे काम करता है:

  • उपयोगकर्ता GitHub Issue के माध्यम से प्रतिक्रिया या आवश्यकताएं देते हैं।
  • ओटीम सदस्य साप्ताहिक बैठकों में समाधान पर चर्चा करते हैं या सीधे Issue में जवाब देते हैं।
  • चर्चा के अनुसार विशेषताएं लागू करें या बग्स ठीक करें।
  • कोड रिव्यू और CI जांच, फिर आवश्यकता होने पर रिलीज करें।

यह प्रक्रिया अन्य ओपन सोर्स प्रोजेक्ट्स की तरह ही है। यहां कुछ मुख्य बिंदु हैं:

  • Issue को हल करने के बाद, टेनसेंट इंजीनियर यह निर्धारित करेंगे कि क्या समस्या समुदाय के लिए भी एक सामान्य समस्या है। यदि हां, तो वे समुदाय को एक PR फाइल करेंगे।
  • टेनसेंट ओटीम एपाचे एपीआईएसआईएक्स की नई विशेषताओं की नियमित समीक्षा करेगा ताकि यह निर्धारित किया जा सके कि क्या यह स्थिर है और क्या यह टेनसेंट के लिए भी एक दर्द बिंदु है। यदि उत्तर हां है, तो संबंधित कोड्स को चुनें।

शुरुआत में, ओटीम हर 12 घंटे में एपाचे एपीआईएसआईएक्स के साथ कोड्स को सिंक करता था ताकि हम एपाचे एपीआईएसआईएक्स को जल्दी से फॉलो अप कर सकें, लेकिन इस दृष्टिकोण ने कुछ समस्याएं लाईं:

  • एपाचे एपीआईएसआईएक्स के साथ कोड्स को सिंक करने के बाद, हम यह सुनिश्चित कर सकते हैं कि नियम सही हैं लेकिन यह सुनिश्चित नहीं कर सकते कि कोड्स स्थिर हैं। कुछ अप्रत्याशित त्रुटियां समवर्ती मामलों में हुईं।
  • मर्ज किए गए कोड्स कभी-कभी तार्किक रूप से कई PR अपस्ट्रीम संघर्ष का कारण बनते हैं, लेकिन एपाचे एपीआईएसआईएक्स और ओटीम का CI इस मामले का पता नहीं लगा सकता है। केवल जब हम PRs को मास्टर ब्रांच में मर्ज करते हैं, तब हमें पता चलता है कि कुछ गलत हुआ है।

इन कारणों से, ओटीम अब आंतरिक समीक्षाओं के बाद आवश्यक विशेषताओं के लिए कोड्स को चुनने की ओर बढ़ रहा है।

ओटीम ट्रेंड

मई 2021 तक, ओटीम ने टेनसेंट के भीतर दस से अधिक टीमों के लिए एपाचे एपीआईएसआईएक्स को लागू किया है, जिसमें दैनिक व्यावसायिक अनुरोध ट्रैफिक एक अरब से अधिक है। साथ ही, ओटीम ने एपाचे एपीआईएसआईएक्स के लिए दस से अधिक विशेषताएं विकसित की हैं, जिनमें सेवा खोज, आरपीसी प्रोटोकॉल रूपांतरण, और मॉनिटरिंग प्लेटफॉर्म के साथ कनेक्ट करना शामिल है।

साथ ही, ओटीम ने एपाचे एपीआईएसआईएक्स के समुदाय को कुछ मानक विशेषताएं भी योगदान दी हैं। वर्तमान में, ओटीम टीम के दो सदस्य एपाचे एपीआईएसआईएक्स के PMC भी हैं, और ओटीम ने समुदाय को 50 से अधिक PRs योगदान दिए हैं। हमें विश्वास है कि ओटीम भविष्य में एपाचे एपीआईएसआईएक्स समुदाय के साथ सहयोग करता रहेगा।

ओटीम आंतरिक विशेषताएं

आंतरिक दर्द बिंदु

ओटीम का प्राथमिक दायित्व टेनसेंट के लिए एपाचे एपीआईएसआईएक्स की विशेषताओं को बनाए रखना है। आइए देखें कि ओटीम को किन दर्द बिंदुओं का सामना करना पड़ा।

  • आरपीसी फ्रेमवर्क फ्रंटएंड के लिए अनुकूल नहीं है: टेनसेंट के भीतर कई लेगेसी प्रोजेक्ट्स हैं जो टीएआरएस फ्रेमवर्क का उपयोग करते हैं, यह टीआरपीसी की तरह एचटीटीपी प्रोटोकॉल का सीधे समर्थन नहीं करता है, यह केवल आरपीसी फ्रेमवर्क के सबसे पारंपरिक टीसीपी प्रोटोकॉल का समर्थन करता है, और ट्रांसपोर्ट सामग्री एक विशिष्ट बाइनरी प्रोटोकॉल का उपयोग करती है। हमें इन इंटरफेस को फ्रंटएंड-अनुकूल एचटीटीपी + JSON रूप में परिवर्तित करने के लिए एक मध्यवर्ती सेवा बनाए रखने की आवश्यकता है।
  • सेवा केंद्रों का विविधीकरण: टेनसेंट के आंतरिक सेवाओं में कई सेवा केंद्र हैं, जैसे सीएल5, एल5, पोलारिस, आदि। हालांकि हम धीरे-धीरे एक ही सेवा केंद्र का उपयोग करेंगे, लेकिन इस विस्तारित अवधि के दौरान हम एक साथ कई सेवा केंद्रों का उपयोग करेंगे। प्रारंभिक एपाचे एपीआईएसआईएक्स इसका समर्थन नहीं करता है।
  • अलार्म: एक गेटवे के रूप में, अलार्म एक दिशा नहीं है जिस पर इसे ध्यान देना चाहिए, लेकिन एक मूलभूत घटक के रूप में, अलार्म टीम के लिए एक आवश्यक घटक होना चाहिए। अलार्म समस्या को कैसे हल करें यह भी एक दर्द बिंदु है।
  • सुरक्षा: टेनसेंट के पास बड़ी मात्रा में ट्रैफिक और सुरक्षा आवश्यकताएं हैं। बहुत सारे टूसी उत्पाद ओटीम का उपयोग कर रहे हैं, और उन्हें नेटवर्क से बड़ी संख्या में उपयोगकर्ताओं के दुरुपयोग और हमलों का सामना करना पड़ता है। सबसे विशिष्ट मामले डीडीओएस, रीप्ले, टैम्परिंग अनुरोध, आदि हैं। क्या हम इन मुद्दों को गेटवे स्तर पर हल कर सकते हैं?

समस्या समाधान

ओटीम आर्किटेक्चर

उपरोक्त डायग्राम टेनसेंट के भीतर एक लैंडिंग केस के सरलीकरण से आता है। हम देख सकते हैं कि ओटीम में उठाए गए कई समस्याओं को हल किया गया है:

  • प्रोटोकॉल रूपांतरण: एपाचे एपीआईएसआईएक्स पर आधारित, ओटीम टीआरपीसी और टीएआरएस प्रोटोकॉल रूपांतरण प्राप्त करता है। जो एचटीटीपी लेगेसी सेवाएं नहीं करती हैं, वे गेटवे में रूपांतरण प्लगइन का उपयोग करके एचटीटीपी और आरपीसी ट्रांसफर आवश्यकताओं को प्राप्त कर सकती हैं, बिना मध्यवर्ती सेवाएं लिखे।
  • एकाधिक सेवा केंद्र: हमने इस विशेषता को समुदाय को योगदान दिया है। मॉनिटरिंग प्लेटफॉर्म को रिपोर्ट करना: टेनसेंट ओटीम मॉनिटरिंग प्लेटफॉर्म के साथ कनेक्ट करने के लिए प्लगइन्स का उपयोग करता है। उपयोगकर्ताओं को केवल कुछ कॉन्फ़िगरेशन करने की आवश्यकता होती है, और फिर सिस्टम स्वचालित रूप से मेट्रिक्स, लॉग्स रिपोर्ट करेगा। वैसे, उपयोगकर्ता मॉनिटरिंग प्लेटफॉर्म पर अलार्म नीतियों को कॉन्फ़िगर कर सकते हैं।
  • एंटी-रीप्ले और एंटी-टैम्परिंग: ओटीम एंटी-रीप्ले और एंटी-टैम्परिंग प्लगइन्स को लागू करता है, जिससे बाहरी व्यवसाय जिन्हें इन क्षमताओं की आवश्यकता होती है, उन्हें सीधे उपयोग करने की अनुमति मिलती है ताकि उनके एपीआई की सुरक्षा सुनिश्चित हो सके।

हमें उम्मीद है कि ये उदाहरण आपको एपाचे एपीआईएसआईएक्स के अधिक उपयोग परिदृश्यों का पता लगाने और इसे एक उपयोगी प्लेटफॉर्म के रूप में बेहतर उपयोग करने में मदद करेंगे। उदाहरण के लिए, किसी ने गेटवे का उपयोग करके टेनसेंट क्लाउड नीतियों के अनुसार कुछ एपीआई विनिर्देशों को अनिवार्य रूप से लागू किया।

सारांश

ओटीम ने व्यावसायिक टीम को उनके दर्द बिंदुओं को हल करने में मदद की और टेनसेंट के भीतर एपाचे एपीआईएसआईएक्स की विशेषताओं को लगातार सुधारा, और समुदाय के विकास के साथ आगे बढ़ा।

यदि आपकी टीम के पास गेटवे नहीं है, तो आप एपाचे एपीआईएसआईएक्स के बारे में अधिक जानने के लिए खोज सकते हैं और एपाचे एपीआईएसआईएक्स समुदाय में भाग लेने के लिए स्वागत है।

Tags: