एंटीपैटर्न: जो कोटा नहीं दिया गया है उसे कॉन्फ़िगर करें

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

Apigee Edge, कोटा नीति का इस्तेमाल करके, किसी तय समयावधि के लिए एपीआई प्रॉक्सी को किए जा सकने वाले अनुरोधों की संख्या को कॉन्फ़िगर करने की सुविधा देता है.

ऐंटीपैटर्न

एपीआई प्रॉक्सी के अनुरोध को, डिस्ट्रिब्यूट किए गए एक या उससे ज़्यादा Edge कॉम्पोनेंट पूरा कर सकते हैं. इन्हें मैसेज प्रोसेसर कहा जाता है. अगर एपीआई अनुरोधों को पूरा करने के लिए, एक से ज़्यादा मैसेज प्रोसेसर कॉन्फ़िगर किए गए हैं, तो हो सकता है कि कोटा खत्म हो जाए. ऐसा इसलिए, क्योंकि हर मैसेज प्रोसेसर, प्रोसेस किए गए अनुरोधों की अपनी "गिनती" रखता है.

आइए, इसे एक उदाहरण की मदद से समझते हैं. एपीआई प्रॉक्सी के लिए, यहां दी गई कोटा नीति पर विचार करें:

<!-- /antipatterns/examples/1-6.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

ऊपर दिए गए कॉन्फ़िगरेशन के हिसाब से, हर घंटे कुल 100 अनुरोध किए जा सकते हैं.

हालांकि, व्यवहार में जब कई मैसेज प्रोसेसर, एपीआई अनुरोधों को पूरा करते हैं, तो यह होता है:

ऊपर दिए गए इलस्ट्रेशन में:

  • कोटा नीति को इस तरह कॉन्फ़िगर किया गया है कि हर घंटे 100 अनुरोधों की अनुमति दी जा सके.
  • एपीआई प्रॉक्सी को किए गए अनुरोधों को दो मैसेज प्रोसेसर पूरा कर रहे हैं.
  • हर मैसेज प्रोसेसर, अपने कोटा काउंट वैरिएबल quota_count_mp1 और quota_count_mp2 को बनाए रखता है, ताकि यह ट्रैक किया जा सके कि वह कितने अनुरोधों को प्रोसेस कर रहा है.
  • इसलिए, हर मैसेज प्रोसेसर अलग-अलग तौर पर 100 एपीआई अनुरोधों को अनुमति देगा. इसका नतीजा यह होता है कि 100 अनुरोधों के बजाय कुल 200 अनुरोध प्रोसेस किए जाते हैं.

असर

इस स्थिति में, कोटा कॉन्फ़िगरेशन का मकसद पूरा नहीं होता. साथ ही, इससे अनुरोधों को पूरा करने वाले बैकएंड सर्वर पर बुरा असर पड़ सकता है.

बैकएंड सर्वर ये काम कर सकते हैं:

  • उम्मीद से ज़्यादा ट्रैफ़िक आने की वजह से, सर्वर पर ज़्यादा लोड पड़ सकता है
  • नए एपीआई अनुरोधों का जवाब नहीं देता है. इससे 503 गड़बड़ियां होती हैं

सबसे सही तरीका

कोटा नीति में <Distributed> एलिमेंट को true पर सेट करें, ताकि यह पक्का किया जा सके कि सभी मैसेज प्रोसेसर में एपीआई अनुरोधों को ट्रैक करने के लिए, एक ही काउंटर का इस्तेमाल किया जा रहा है. <Distributed> एलिमेंट को नीचे दिए गए कोड स्निपेट में दिखाए गए तरीके से सेट किया जा सकता है:

<!-- /antipatterns/examples/1-7.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Distributed>true</Distributed>
  <Allow count="100"/>
</Quota>