माइक्रोसर्विसेज़ हाई अवेलेबिलिटी को समझना: Apache APISIX के साथ API गवर्नेंस रणनीतियों की खोज

March 29, 2024

Technology

परिचय

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

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

API प्रशासन रणनीतियाँ

दर सीमित करना

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

दर सीमित करने को विभिन्न तरीकों से लागू किया जा सकता है, जिनमें शामिल हैं:

  • अनुरोध गणना के आधार पर: प्रत्येक समय अवधि के भीतर अनुरोधों की संख्या को ट्रैक करना और उन्हें एक निश्चित सीमा के भीतर सीमित करना। उदाहरण के लिए, प्रति सेकंड अधिकतम 100 अनुरोधों को संसाधित करना।

  • अनुरोध आवृत्ति के आधार पर: प्रति क्लाइंट या आईपी पते पर अनुरोध आवृत्ति को सीमित करना ताकि अत्यधिक अनुरोधों को रोका जा सके। उदाहरण के लिए, प्रति मिनट अधिकतम 10 अनुरोधों की अनुमति देना।

  • कनेक्शन गणना के आधार पर: एक साथ स्थापित किए जाने वाले कनेक्शनों की संख्या को सीमित करना ताकि अत्यधिक सिस्टम संसाधनों का उपयोग न हो। उदाहरण के लिए, अधिकतम 100 एक साथ कनेक्शनों की अनुमति देना।

विभिन्न दर सीमित करने की रणनीतियाँ हमें विभिन्न परिदृश्य आवश्यकताओं को पूरा करने में सक्षम बनाती हैं। उदाहरण के लिए, मूल्यवान API संसाधनों के लिए, हम अनुरोधों की संख्या को प्रति मिनट 10 तक सीमित कर सकते हैं। या, सेवा उपलब्धता को बढ़ाने के लिए, हम समवर्ती अनुरोधों की संख्या को सीमित कर सकते हैं ताकि सेवा प्रतिक्रिया समय को कम किया जा सके, अन्य परिदृश्यों के बीच। इन दर सीमित करने की रणनीतियों का उचित कार्यान्वयन उच्च समवर्तीता और अचानक ट्रैफ़िक स्पाइक्स के तहत सेवाओं के सामान्य संचालन को सुनिश्चित करने में मदद कर सकता है।

सर्किट ब्रेकिंग

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

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

सर्किट ब्रेकिंग तंत्र को शामिल करके, माइक्रोसर्विसेज आर्किटेक्चर पारस्परिक सेवा कॉल से उत्पन्न होने वाले संभावित कैस्केडिंग फेल्योर मुद्दों से बेहतर ढंग से निपट सकता है, विशेष रूप से उच्च दबाव वाले परिदृश्यों में सिस्टम की स्थिरता और विश्वसनीयता सुनिश्चित करता है।

डिग्रेडेशन

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

सामान्य रणनीतियों में शामिल हैं:

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

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

APISIX में दर सीमित करना, सर्किट ब्रेकिंग, और डिग्रेडेशन

हम APISIX में सक्षम उपरोक्त तीन प्रमुख रणनीतियों का उपयोग कैसे कर सकते हैं ताकि माइक्रोसर्विसेज की उच्च उपलब्धता को बढ़ाया जा सके? नीचे केवल सामान्य अनुप्रयोग उदाहरणों के लिए कुछ उदाहरण दिए गए हैं।

limit-count प्लगइन के साथ दर सीमित करना

APISIX विभिन्न अंतर्निहित ट्रैफ़िक प्रबंधन प्लगइन्स प्रदान करता है जैसे limit-count, limit-req, और limit-conn। वास्तविक आवश्यकताओं के आधार पर, हम ट्रैफ़िक नियंत्रण के लिए उपयुक्त विधि चुन सकते हैं। limit-count प्लगइन को उदाहरण के रूप में लेते हुए, यह एक विशिष्ट समय अंतराल के भीतर अनुरोधों की कुल संख्या को सीमित करता है और शेष अनुरोधों की संख्या को HTTP हेडर में वापस करता है।

curl -i http://127.0.0.1:9080/apisix/admin/routes/1 \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/get", "plugins": { "limit-count": { "count": 3, "time_window": 60, "rejected_code": 429, "key_type": "var", "key": "remote_addr" } }, "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'

api-breaker प्लगइन के साथ सर्किट ब्रेकिंग

APISIX में api-breaker प्लगइन पूर्व निर्धारित सीमाओं के आधार पर सर्किट ब्रेकिंग तंत्र को स्वचालित रूप से ट्रिगर करता है ताकि कैस्केडिंग फेल्योर को रोका जा सके। उदाहरण के लिए, यह तब सर्किट ब्रेकिंग शुरू कर सकता है जब अपस्ट्रीम सेवाएं लगातार 3 बार 500 या 503 स्थिति कोड वापस करती हैं और जब 200 स्थिति कोड प्राप्त होता है तो पहुंच को फिर से शुरू करता है।

curl "http://127.0.0.1:9180/apisix/admin/routes/1" \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins": { "api-breaker": { "break_response_code": 502, "unhealthy": { "http_statuses": [500, 503], "failures": 3 }, "healthy": { "http_statuses": [200], "successes": 1 } } }, "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } }, "uri": "/get", }'

fault-injection प्लगइन के साथ डिग्रेडेशन

APISIX के fault-injection और mocking प्लगइन्स डिग्रेडेशन रणनीतियों को सेट करने का समर्थन करते हैं ताकि उच्च सिस्टम लोड के दौरान कुछ कार्यों को अस्थायी रूप से अक्षम किया जा सके या सीधे पूर्व निर्धारित डेटा वापस किया जा सके, जिससे सिस्टम की स्थिरता सुनिश्चित हो। उदाहरण के लिए, fault-injection प्लगइन क्लाइंट्स को सीधे निर्दिष्ट HTTP स्थिति कोड और बॉडी मान वापस कर सकता है।

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins": { "fault-injection": { "abort": { "http_status": 200, "body": "Fault Injection!" } } }, "upstream": { "nodes": { "httpbin.org:80": 1 }, "type": "roundrobin" }, "uri": "/get" }'

निष्कर्ष

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

Tags: