API Observability बढ़ाने की श्रृंखला (भाग 3): Tracing
March 19, 2024
परिचय
वितरित ट्रेसिंग क्या है?
आज के माइक्रोसर्विसेज आर्किटेक्चर और वितरित सिस्टम के परिदृश्य में, एक एकल अनुरोध अक्सर कई सेवाओं से गुजरता है, जिनमें से प्रत्येक में विभिन्न आंतरिक प्रसंस्करण चरण होते हैं। सिस्टम के कुशल और स्थिर संचालन को सुनिश्चित करने के लिए, इन अनुरोधों के पूरे पथ और प्रसंस्करण को समझना आवश्यक है। इस आवश्यकता ने वितरित ट्रेसिंग प्रौद्योगिकी को जन्म दिया। यह हमें एक अनुरोध के प्रारंभ से पूर्ण होने तक के पूरे यात्रा को स्पष्ट रूप से समझने में सक्षम बनाता है, जिसमें यह प्रत्येक सेवा से गुजरता है, प्रत्येक सेवा का प्रसंस्करण समय, और किसी भी असामान्यता की घटना शामिल है।
एपीआई में ट्रेसिंग का उपयोग करने की प्रक्रिया
प्रारंभ में, प्रत्येक सेवा के प्रवेश बिंदु पर ट्रेसिंग के लिए एक ट्रेसिंग एजेंट या एसडीके को तैनात करना आवश्यक है ताकि सभी अनुरोधों को कैप्चर किया जा सके। ट्रेसिंग डेटा के माध्यम से, हम प्रत्येक सेवा में अनुरोधों के प्रसंस्करण समय को स्पष्ट रूप से देख सकते हैं, जिससे संभावित प्रदर्शन बाधाओं की पहचान की जा सके। वितरित ट्रेसिंग न केवल सामान्य अनुरोध प्रसंस्करण को रिकॉर्ड करता है, बल्कि प्रक्रिया के दौरान होने वाले किसी भी अपवाद और त्रुटियों को भी कैप्चर करता है। वितरित ट्रेसिंग डेटा को विज़ुअलाइज़ करके, हम विभिन्न सेवाओं और घटकों के बीच अनुरोधों के प्रवाह को सहजता से समझ सकते हैं।

ऑब्जर्वेबिलिटी को बढ़ाना - वितरित ट्रेसिंग
वितरित ट्रेसिंग के संबंध में, यहां एपीआई ऑब्जर्वेबिलिटी को बढ़ाने के लिए कुछ विधियां और विशिष्ट उदाहरण दिए गए हैं:
1. उपयुक्त वितरित ट्रेसिंग टूल्स और प्रौद्योगिकियों का चयन
वितरित ट्रेसिंग टूल्स का चयन करते समय, आपकी प्रौद्योगिकी स्टैक, व्यावसायिक आवश्यकताएं, और मॉनिटरिंग जटिलता को ध्यान में रखा जाना चाहिए। Zipkin, SkyWalking, और OpenTelemetry लोकप्रिय वितरित ट्रेसिंग समाधान हैं, जिनमें से प्रत्येक की अपनी अनूठी विशेषताएं हैं।
2. एपीआई विकास में वितरित ट्रेसिंग को एकीकृत करना
Zipkin और SkyWalking के लिए, एपीआई विकास में इन्हें संबंधित निर्भरताओं और कॉन्फ़िगरेशन को जोड़कर एकीकृत किया जा सकता है। हालांकि, OpenTelemetry के लिए, इसके एपीआई का उपयोग करके ट्रेसिंग संदर्भ को मैन्युअल रूप से बनाने और प्रबंधित करने की आवश्यकता होती है।
3. वितरित ट्रेसिंग सिस्टम को कॉन्फ़िगर और ऑप्टिमाइज़ करना
Zipkin, SkyWalking, और OpenTelemetry सभी को कॉन्फ़िगरेशन फ़ाइलों के माध्यम से अनुकूलित किया जा सकता है। सैंपलिंग दर, बैकएंड स्टोरेज कॉन्फ़िगरेशन, और डेटा ट्रांसमिशन ऑप्टिमाइज़ेशन जैसे पैरामीटर्स सेट किए जा सकते हैं। इसके अलावा, असाधारण घटनाओं का तुरंत जवाब देने के लिए अलर्ट नियमों को परिभाषित करना महत्वपूर्ण है।
4. डेटा विश्लेषण और विज़ुअलाइज़ेशन
Zipkin, SkyWalking, और OpenTelemetry वितरित ट्रेसिंग डेटा और प्रदर्शन मेट्रिक्स को प्रदर्शित करने के लिए विज़ुअलाइज़ेशन इंटरफेस प्रदान करते हैं। उदाहरण के लिए, Zipkin के UI में, विशिष्ट ट्रेस डेटा को खोजा और देखा जा सकता है ताकि विभिन्न सेवाओं के बीच अनुरोधों के प्रवाह को समझा जा सके। SkyWalking का डैशबोर्ड एक वैश्विक प्रदर्शन अवलोकन और सेवा कॉल संबंध ग्राफ प्रदान करता है। OpenTelemetry डेटा को Grafana जैसे विभिन्न विज़ुअलाइज़ेशन टूल्स में आयात किया जा सकता है ताकि कस्टम डैशबोर्ड और चार्ट बनाए जा सकें।
5. API7 एंटरप्राइज़ वितरित ट्रेसिंग प्लगइन्स के साथ एकीकृत होता है
API7 एंटरप्राइज़ कई ट्रेसिंग प्लगइन्स का समर्थन करता है, जिनमें Zipkin, OpenTracing, और SkyWalking शामिल हैं। इन ट्रेसिंग प्लगइन्स को रूटिंग नियमों या वैश्विक नियमों से बांधने की आवश्यकता होती है। यदि सैंपलिंग दर की कोई आवश्यकता नहीं है, तो उन्हें वैश्विक नियमों से बांधने की सलाह दी जाती है ताकि चूक से बचा जा सके।

व्यावहारिक केस विश्लेषण: ई-कॉमर्स एपीआई की ऑब्जर्वेबिलिटी को बढ़ाना
एक ई-कॉमर्स प्लेटफॉर्म पर उत्पादों को ब्राउज़ करने और खरीदने की प्रक्रिया में, कई एपीआई कॉल शामिल होते हैं। उदाहरण के लिए, उपयोगकर्ता प्रारंभ में उत्पाद सेवा के एपीआई को कॉल करके उत्पादों की सूची प्राप्त करते हैं, फिर एक विशिष्ट उत्पाद का चयन करते हैं और ऑर्डर सेवा के एपीआई को कॉल करके एक ऑर्डर बनाते हैं, और अंत में भुगतान सेवा के एपीआई को कॉल करके भुगतान पूरा करते हैं।
इस परिदृश्य में, यह देखा गया कि ऑर्डर सेवा का एपीआई अक्सर चरम अवधि में देरी और टाइमआउट का अनुभव करता था, जिसके परिणामस्वरूप चेकआउट प्रक्रिया में ध्यान देने योग्य देरी और विफलताएं होती थीं। इस समस्या को हल करने के लिए, टीम ने प्रदर्शन बाधाओं का निदान करने और सिस्टम को ऑप्टिमाइज़ करने के लिए वितरित ट्रेसिंग प्रौद्योगिकी को शामिल करने का निर्णय लिया।
-
वितरित ट्रेसिंग टूल्स का चयन: टीम ने SkyWalking को वितरित ट्रेसिंग टूल के रूप में चुना क्योंकि यह कई भाषाओं का समर्थन करता है, एकीकरण में आसान है, और समृद्ध विज़ुअलाइज़ेशन क्षमताएं प्रदान करता है।
-
SkyWalking को एकीकृत करना: ऑर्डर सेवा Java में विकसित की गई है, और टीम ने SkyWalking के Java Agent को ऑर्डर सेवा के कोड में एकीकृत किया। यह SkyWalking को ऑर्डर सेवा के एपीआई को कॉल करते समय स्वचालित रूप से ट्रेसिंग डेटा एकत्र करने की अनुमति देता है।
-
SkyWalking को कॉन्फ़िगर करना: टीम ने SkyWalking के बैकएंड स्टोरेज को Elasticsearch में कॉन्फ़िगर किया और ट्रेसिंग डेटा की विस्तारित जानकारी और स्टोरेज लागत के बीच संतुलन बनाने के लिए उपयुक्त सैंपलिंग दर सेट की।
-
ट्रेसिंग डेटा एकत्र करना और विश्लेषण करना: चरम अवधि में, टीम ने SkyWalking के UI के माध्यम से ऑर्डर सेवा के एपीआई के कॉल चेन और प्रदर्शन मेट्रिक्स का अवलोकन किया। उन्होंने पाया कि ऑर्डर निर्माण प्रक्रिया के दौरान उत्पाद इन्वेंटरी सेवा के एपीआई का एक विशिष्ट कॉल काफी लंबा समय लेता है, जो एक प्रदर्शन बाधा बन गया।
-
गहन जांच: टीम ने उत्पाद इन्वेंटरी सेवा के एपीआई के विस्तृत ट्रेसिंग डेटा की जांच की, जिसमें कॉल पैरामीटर्स, रिटर्न परिणाम, और अपवाद जानकारी शामिल थी। उन्होंने पाया कि एपीआई विशिष्ट उत्पादों को प्रसंस्करण करते समय एक जटिल डेटाबेस क्वेरी ऑपरेशन करता है, जिसके परिणामस्वरूप प्रसंस्करण समय बढ़ जाता है।
-
ऑप्टिमाइज़ेशन उपाय: इस समस्या को हल करने के लिए, टीम ने दो ऑप्टिमाइज़ेशन उपाय लागू किए। सबसे पहले, उन्होंने डेटाबेस क्वेरी स्टेटमेंट्स को ऑप्टिमाइज़ किया ताकि क्वेरी दक्षता में सुधार हो सके। दूसरा, उन्होंने उत्पाद इन्वेंटरी सेवा के एपीआई के लिए कैशिंग लागू किया, जिससे अक्सर क्वेरी किए जाने वाले और कम बदलने वाले उत्पादों के लिए परिणाम सीधे कैश से प्राप्त किए जा सकें, जिससे अनावश्यक डेटाबेस क्वेरी से बचा जा सके।
निष्कर्ष
वितरित ट्रेसिंग प्रौद्योगिकी माइक्रोसर्विसेज आर्किटेक्चर और वितरित सिस्टम में एक महत्वपूर्ण भूमिका निभाती है। कई सेवाओं के बीच अनुरोधों के प्रवाह को रिकॉर्ड और विज़ुअलाइज़ करके, हम जल्दी से प्रदर्शन बाधाओं की पहचान कर सकते हैं और उन्हें हल कर सकते हैं, जिससे सिस्टम की स्थिरता और ऑब्जर्वेबिलिटी में सुधार होता है। उपयुक्त वितरित ट्रेसिंग टूल्स का चयन करके और उन्हें एपीआई विकास में एकीकृत करके, हम सिस्टम के संचालन को गहराई से समझ सकते हैं, जिससे उपयोगकर्ता अनुभव और सिस्टम दक्षता में सुधार होता है।