अनिवार्य है
कई विशेष स्रोतों के अनुसार एक उचित रूप से कार्यान्वित वितरित दर सीमक (परमाणु गणना, स्थानीय फ़ॉलबैक कैश) आम तौर पर प्रति अनुरोध एक मिलीसेकंड से कम जोड़ता है। ऑराबेस गेटवे बिल्कुल इस पैटर्न का अनुसरण करता है: स्थानीय एंटी-डीओएस के लिए governor क्रेट, उदाहरणों के बीच वितरित गिनती के लिए एक परमाणु लुआ रेडिस स्क्रिप्ट, रेडिस अनुपलब्ध होने पर फ़ॉलबैक moka कैश। ब्रेकर सर्किट विफलता की स्थिति में कथित विलंबता को जोड़ने के बजाय कम कर देता है - यह पूर्ण टाइमआउट की प्रतीक्षा को शॉर्ट-सर्किट कर देता है। आज तक कोई ऑराबेस विलंबता आंकड़े प्रकाशित नहीं किए गए हैं: यहां बताया गया है कि तंत्र वास्तव में क्यों और कैसे काम करता है।
एंटी-डॉस और एंटी-कैस्केडिंग विफलता, दो अलग-अलग समस्याएं हैं
दर सीमित करना आपके बैकएंड को अत्यधिक ट्रैफ़िक से बचाता है, चाहे वह वैध हो या नहीं - यह प्रश्न का उत्तर देता है "क्या इस कॉलर को अब यह अनुरोध भेजने का अधिकार है?" "। सर्किट ब्रेकर आपके बैकएंड को पहले से ही डाउनस्ट्रीम सेवा से बचाता है - यह जवाब देता है "क्या यह सेवा कभी अनुत्तरदायी होती है, क्या हमें भी प्रयास करना चाहिए?" ". उन्हें भ्रमित करने से एक या दूसरे का आकार छोटा हो जाता है।
ऑराबेस गेटवे पर, दोनों एक ही मिडलवेयर स्टैक में रहते हैं लेकिन अलग-अलग मंजिलों पर: आईपी दर सीमित करना प्रमाणीकरण से पहले चलता है (शुद्ध एंटी-डीओएस, अप्रमाणित ट्रैफ़िक के लिए कोई बिलिंग एसक्यूएल क्वेरी जारी नहीं की जाती है), जबकि सर्किट ब्रेकर आंतरिक सेवाओं या एलएलएम प्रदाताओं को आउटगोइंग कॉल की सुरक्षा करता है।
लागत पूरी तरह कार्यान्वयन पर निर्भर करती है, सिद्धांत पर नहीं
Tyk और APISIX इकोसिस्टम गाइड के अनुसार, Redis (परमाणु संचालन, Lua स्क्रिप्ट, देशी TTL) पर अच्छी तरह से डिज़ाइन की गई वितरित गिनती आम तौर पर 1-3 एमएस विलंबता जोड़ती है, सर्वोत्तम-अनुकूलित मामलों में उप-मिलीसेकंड p99 प्रभाव के साथ। इसके विपरीत, ज़ुप्लो दस्तावेज करता है कि एक खराब तरीके से रखा गया केंद्रीकृत दर सीमक प्रत्येक अनुरोध में दसियों मिलीसेकंड जोड़ सकता है - यह विसंगति सीधे आपके पी99 में दिखाई देती है।
ये श्रेणियाँ सार्वजनिक तकनीकी गाइड (टाइक, ज़ुप्लो, अपाचे APISIX इकोसिस्टम) से आती हैं, सामान्य माप प्रोटोकॉल से नहीं। वे परिमाण के एक क्रम और एक वास्तुशिल्प सिद्धांत को इंगित करते हैं - तुल्यकालिक और केंद्रीकृत के बजाय परमाणु और स्थानीय गिनती - एक अलग बुनियादी ढांचे पर पुन: उत्पन्न करने के लिए एक आंकड़ा नहीं है।
ऑरा-गेटवे में रेट लिमिटिंग वास्तव में कैसे काम करती है
ऑराबेस गेटवे स्थानीय फ़ॉलबैक लिमिटर के रूप में governor क्रेट (टोकन बकेट एल्गोरिदम) का उपयोग करता है, जो गेटवे के कई उदाहरणों के बीच स्थिति को साझा करने के लिए रेडिस के माध्यम से वितरित गिनती के साथ जुड़ा हुआ है। वितरित गिनती रेडिस पक्ष (एकल नेटवर्क ऑपरेशन मेंINCRBY + EXPIRE) पर परमाणु रूप से निष्पादित लुआ स्क्रिप्ट के माध्यम से होती है, न कि पढ़ने-फिर-लिखने वाली राउंड ट्रिप के माध्यम से जो एक समवर्ती विंडो पेश करेगी।
यदि रेडिस अनुपलब्ध हो जाता है, तो प्रत्येक अनुरोध पर लिमिटर को फिर से बनाने से बचने के लिए गेटवे स्वचालित रूप से कैश moka (अधिकतम 1,000,000 प्रविष्टियाँ, निष्क्रियता के 300 सेकंड पर समाप्ति) के साथ स्थानीय लिमिटर governorपर स्विच हो जाता है। यह फ़ॉलबैक देखने योग्य है: प्रत्येक टॉगल एक समर्पित प्रोमेथियस काउंटर को बढ़ाता है, ताकि टीम को पता चले कि प्रभावी सीमा कब एन इंस्टेंस × सीमा फिर से बन जाती है (अन्यथा मौन अंतर-इंस्टेंस अलगाव गिरावट)।
गेटवे आईपी (प्रमाणीकरण से पहले) द्वारा एंटी-डीओएस रेट लिमिटिंग को प्रोजेक्ट/एपीआई कुंजी/उपयोगकर्ता कोटा (प्रमाणीकरण के बाद, जेडब्ल्यूटी दावे उपलब्ध होने के साथ) द्वारा सीमित करने से अलग करता है - स्टैक में दो अलग-अलग मिडलवेयर, प्रत्येक की अपनी ग्रैन्युलैरिटी होती है।
सर्किट ब्रेकर: तीन अवस्थाएँ, एक स्लाइडिंग विंडो
ऑराबेस ब्रेकर सर्किट (aura_core::circuit_breaker, एलएलएम प्रदाताओं के बीच फ़ॉलबैक के लिए गेटवे और aura-ai के बीच साझा किया जाता है) तीन क्लासिक स्थितियों का पालन करता है - Closed, Open, HalfOpen - एक काउंटर के बजाय एक स्लाइडिंग टाइम विंडो पर विफलताओं की गिनती के साथ जो कभी भी रीसेट नहीं होता है।
एक कार्यान्वयन विवरण जो उत्पादन में मायने रखता है: HalfOpen पर स्विच करने से एक समय में केवल एक जांच अनुरोध की अनुमति मिलती है (एंटी थंडरिंग-हर्ड) - इस गार्ड के बिना, सभी लंबित अनुरोध उस सेवा पर एक साथ पहुंच जाएंगे जो अभी फिर से खुल गई है, तुरंत उस विफलता को फिर से बनाना जिससे हम बचने की कोशिश कर रहे थे।
जहां ये मिडलवेयर गेटवे में चलते हैं
ऑराबेस गेटवे मिडलवेयर स्टैक एक सटीक क्रम का पालन करता है, जिसे कोड में सत्यापित किया गया है: अनुरोध पहचानकर्ता → एक्सेस लॉग → आईपी द्वारा दर सीमित करना → प्रमाणीकरण → अभिनेता/कोटा द्वारा दर सीमित करना → सर्किट ब्रेकर → लक्ष्य सेवा के लिए प्रॉक्सी। डाउनस्ट्रीम में उच्च प्रसंस्करण लागत वहन करने से पहले, प्रत्येक चरण अवांछित ट्रैफ़िक को यथाशीघ्र अस्वीकार कर देता है।
पूरा लेख पढ़ें: ऑराबेस गेटवे में डेटा प्लेन बनाम प्रबंधन प्लेन
यहां ऑराबेस के आंकड़े क्यों प्रकाशित नहीं किए गए?
कार्यान्वयन को गेटवे स्रोत कोड में पंक्ति दर पंक्ति सत्यापित किया गया है। लेकिन इस विशिष्ट बुनियादी ढांचे पर अभी तक कोई प्रतिलिपि प्रस्तुत करने योग्य माप प्रोटोकॉल नहीं चलाया और प्रकाशित किया गया है - एक बिना मापे गए आंकड़े को प्रकाशित करना बिना स्रोत वाले मार्केटिंग नंबरों की गलती को दोहराना होगा जिसे हम पुन: पेश करने से इनकार करते हैं। प्रदर्शन आंकड़ा जारी करने से पहले हमें क्या चाहिए, इसके लिए हमारी पूरी बेंचमार्क कार्यप्रणाली देखें।