प्लग इन का इस्तेमाल करना

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

Edge Microgateway v. 3.3.x

ऑडियंस

यह विषय, Edge Microgateway ऑपरेटर के लिए है. ये ऑपरेटर, microgateway के साथ इंस्टॉल किए गए मौजूदा प्लगिन का इस्तेमाल करना चाहते हैं. इसमें स्पाइक अरेस्ट और कोटा प्लगिन के बारे में भी ज़्यादा जानकारी दी गई है. ये दोनों प्लगिन, इंस्टॉल किए गए प्लगिन के साथ शामिल होते हैं. अगर आप एक डेवलपर हैं और आपको नए प्लगिन डेवलप करने हैं, तो कस्टम प्लगिन डेवलप करना लेख पढ़ें.

Edge Microgateway प्लगिन क्या है?

प्लगिन, Node.js मॉड्यूल होता है. यह Edge Microgateway में सुविधाएं जोड़ता है. प्लगिन मॉड्यूल एक जैसे पैटर्न का पालन करते हैं और Edge Microgateway को पता होती है कि इन्हें कहां सेव किया गया है. इससे microgateway, इन्हें अपने-आप ढूंढकर लोड कर पाता है. Edge Microgateway में कई मौजूदा प्लगिन शामिल हैं. साथ ही, कस्टम प्लगिन भी बनाए जा सकते हैं. इसके बारे में कस्टम प्लगिन डेवलप करना लेख में बताया गया है.

Edge Microgateway के साथ बंडल किए गए मौजूदा प्लगिन

Edge Microgateway को इंस्टॉल करने पर, कई प्लगिन उपलब्ध कराए जाते हैं. यहां दी गई टेबल में, सबसे ज़्यादा इस्तेमाल किए जाने वाले कुछ प्लगिन के बारे में बताया गया है.

प्लग इन डिफ़ॉल्ट रूप से चालू है ब्यौरा
analytics हां यह कुकी, Edge Microgateway से Apigee Edge को आंकड़ों का डेटा भेजती है.
oauth हां Edge Microgateway में OAuth टोकन और एपीआई पासकोड की पुष्टि करने की सुविधा जोड़ता है. Edge Microgateway सेट अप और कॉन्फ़िगर करना लेख पढ़ें.
quota नहीं यह Edge Microgateway को किए गए अनुरोधों पर कोटा लागू करता है. यह कुकी, Apigee Edge का इस्तेमाल करके कोटे को सेव और मैनेज करती है. कोटा प्लग इन का इस्तेमाल करना लेख पढ़ें.
spikearrest नहीं यह ट्रैफ़िक में अचानक होने वाली बढ़ोतरी और DoS हमलों से बचाता है. स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना लेख पढ़ें.
header-uppercase नहीं टिप्पणी किया गया सैंपल प्रॉक्सी, डेवलपर को कस्टम प्लगिन लिखने में मदद करने के लिए बनाया गया है. Edge Microgateway का सैंपल प्लगिन देखें.
accumulate-request नहीं यह कुकी, अनुरोध किए गए डेटा को एक ऑब्जेक्ट में इकट्ठा करती है. इसके बाद, डेटा को प्लगिन चेन में मौजूद अगले हैंडलर को भेजती है. यह उन ट्रांसफ़ॉर्म प्लगिन को लिखने के लिए फ़ायदेमंद है जिन्हें एक ही, इकट्ठा किए गए अनुरोध के कॉन्टेंट ऑब्जेक्ट पर काम करना होता है.
accumulate-response नहीं यह कुकी, जवाब के डेटा को एक ऑब्जेक्ट में इकट्ठा करती है. इसके बाद, प्लगिन चेन में मौजूद अगले हैंडलर को डेटा पास करती है. यह उन ट्रांसफ़ॉर्म प्लगिन को लिखने के लिए फ़ायदेमंद है जिन्हें एक ही, इकट्ठा किए गए रिस्पॉन्स कॉन्टेंट ऑब्जेक्ट पर काम करना होता है.
transform-uppercase नहीं अनुरोध या जवाब के डेटा को बदलता है. यह प्लगिन, ट्रांसफ़ॉर्म प्लगिन को लागू करने का सबसे सही तरीका है. उदाहरण के तौर पर दिए गए प्लगिन में, डेटा को सामान्य तरीके से बदला जाता है. जैसे, अनुरोध या जवाब के डेटा को अपरकेस में बदला जाता है. हालांकि, इसे आसानी से अन्य तरह के बदलावों के लिए भी इस्तेमाल किया जा सकता है. जैसे, एक्सएमएल को JSON में बदलना.
json2xml नहीं यह accept या content-type हेडर के आधार पर, अनुरोध या जवाब के डेटा को बदलता है. ज़्यादा जानकारी के लिए, GitHub पर प्लगिन के दस्तावेज़ देखें.
quota-memory नहीं यह Edge Microgateway को किए गए अनुरोधों पर कोटा लागू करता है. यह कुकी, लोकल मेमोरी में कोटे को सेव और मैनेज करती है.
healthcheck नहीं यह Edge Microgateway प्रोसेस के बारे में जानकारी देता है. जैसे, मेमोरी का इस्तेमाल, सीपीयू का इस्तेमाल वगैरह. इस प्लगिन का इस्तेमाल करने के लिए, अपने Edge Microgateway इंस्टेंस पर /healthcheck यूआरएल को कॉल करें. यह प्लगिन, एक उदाहरण के तौर पर बनाया गया है. इसका इस्तेमाल करके, अपनी ज़रूरत के हिसाब से हेल्थ चेक करने वाला प्लगिन बनाया जा सकता है.

मौजूदा प्लगिन कहां मिलेंगे

Edge Microgateway के साथ बंडल किए गए मौजूदा प्लगिन यहां मौजूद हैं. यहां [prefix] npm प्रीफ़िक्स डायरेक्ट्री है. अगर आपको यह डायरेक्ट्री नहीं मिल रही है, तो Edge Microgateway कहां इंस्टॉल किया गया है देखें.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

प्लगिन जोड़ना और उन्हें कॉन्फ़िगर करना

प्लगिन जोड़ने और उन्हें कॉन्फ़िगर करने के लिए, इस पैटर्न का इस्तेमाल करें:

  1. Edge Microgateway को बंद करें.
  2. Edge Microgateway की कॉन्फ़िगरेशन फ़ाइल खोलें. विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन में बदलाव करना लेख पढ़ें.
  3. प्लगिन को कॉन्फ़िगरेशन फ़ाइल के plugins:sequence एलिमेंट में इस तरह जोड़ें. प्लगिन उसी क्रम में लागू होते हैं जिस क्रम में वे इस सूची में दिखते हैं.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. प्लगिन को कॉन्फ़िगर करें. कुछ प्लगिन में ऐसे पैरामीटर होते हैं जिन्हें कॉन्फ़िगर करना ज़रूरी नहीं होता. इन्हें कॉन्फ़िगर फ़ाइल में कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, स्पाइक अरेस्ट प्लगिन को कॉन्फ़िगर करने के लिए, यह स्टैंज़ा जोड़ा जा सकता है. ज़्यादा जानकारी के लिए, स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना लेख पढ़ें.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
  1. फ़ाइल सेव करें.
  2. आपने जिस कॉन्फ़िगरेशन फ़ाइल में बदलाव किया है उसके हिसाब से, Edge Microgateway को रीस्टार्ट करें या फिर से लोड करें.

प्लगिन के हिसाब से कॉन्फ़िगरेशन

कॉन्फ़िगरेशन फ़ाइल में दिए गए प्लगिन के पैरामीटर को बदला जा सकता है. इसके लिए, इस डायरेक्ट्री में प्लगिन के हिसाब से कॉन्फ़िगरेशन बनाएं:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

इसमें [prefix], npm प्रीफ़िक्स डायरेक्ट्री है. अगर आपको यह डायरेक्ट्री नहीं मिल रही है, तो Edge Microgateway कहां इंस्टॉल किया गया है देखें.

plugins/<plugin_name>/config/default.yaml. उदाहरण के लिए, इस ब्लॉक को plugins/spikearrest/config/default.yaml में रखा जा सकता है. इससे कॉन्फ़िगरेशन की अन्य सेटिंग बदल जाएंगी.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

स्पाइक अरेस्ट प्लगिन का इस्तेमाल करना

स्पाइक अरेस्ट प्लगिन, ट्रैफ़िक में अचानक होने वाली बढ़ोतरी से बचाता है. यह Edge Microgateway इंस्टेंस से प्रोसेस किए गए अनुरोधों की संख्या को थ्रॉटल करता है.

स्पाइक अरेस्ट प्लगिन जोड़ना

प्लगिन जोड़ना और उन्हें कॉन्फ़िगर करना लेख पढ़ें.

स्पाइक अरेस्ट के लिए, कॉन्फ़िगरेशन का सैंपल

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

स्पाइक अरेस्ट के लिए कॉन्फ़िगरेशन के विकल्प

  • timeUnit: स्पाइक अरेस्ट की सुविधा को लागू करने की विंडो कितनी बार रीसेट होती है. मान्य वैल्यू, सेकंड या मिनट हैं.
  • allow: timeUnit के दौरान, अनुमति दिए जाने वाले अनुरोधों की ज़्यादा से ज़्यादा संख्या. अगर एक से ज़्यादा Edge Micro प्रोसेस चल रही हैं, तो यह भी देखें.
  • bufferSize: (ज़रूरी नहीं, डिफ़ॉल्ट = 0) अगर bufferSize > 0 है, तो स्पाइक अरेस्ट इस संख्या के हिसाब से अनुरोधों को बफ़र में सेव करता है. अगली बार एक्ज़ीक्यूट होने पर, बफ़र किए गए अनुरोधों को सबसे पहले प्रोसेस किया जाएगा. बफ़र जोड़ना भी देखें.

स्पाइक अरेस्ट कैसे काम करता है?

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

रनटाइम स्पाइक अरेस्ट का व्यवहार, आपकी ओर से डाली गई वैल्यू से अलग होता है.

उदाहरण के लिए, मान लीजिए कि आपने हर मिनट में 30 अनुरोध करने की दर तय की है. इसे इस तरह से दिखाया जा सकता है:

spikearrest:
   timeUnit: minute
   allow: 30

टेस्टिंग के दौरान, आपको लग सकता है कि एक सेकंड में 30 अनुरोध भेजे जा सकते हैं. हालांकि, ऐसा तब तक ही किया जा सकता है, जब तक वे एक मिनट के अंदर भेजे गए हों. हालांकि, नीति के तहत सेटिंग को लागू करने का तरीका यह नहीं है. अगर इस बारे में सोचा जाए, तो एक सेकंड में 30 अनुरोधों को कुछ एनवायरमेंट में मिनी स्पाइक माना जा सकता है.

इसके बाद क्या होता है? स्पाइक जैसी स्थिति से बचने के लिए, स्पाइक अरेस्ट की सुविधा, अनुमति वाले ट्रैफ़िक को कम कर देती है. इसके लिए, यह आपकी सेटिंग को छोटे-छोटे इंटरवल में बांट देती है. जैसे:

हर मिनट के हिसाब से शुल्क

हर मिनट की दरों को, सेकंड के अंतराल में अनुमति दिए गए अनुरोधों में बदल दिया जाता है. उदाहरण के लिए, हर मिनट में 30 अनुरोधों को इस तरह से बांटा जाता है:

60 सेकंड (एक मिनट) / 30 = दो सेकंड का अंतराल. इसका मतलब है कि हर दो सेकंड में एक अनुरोध किया जा सकता है. दो सेकंड के अंदर किया गया दूसरा अनुरोध पूरा नहीं होगा. इसके अलावा, एक मिनट में 31वां अनुरोध करने पर, उसे पूरा नहीं किया जा सकेगा.

हर सेकंड के हिसाब से दरें

प्रति सेकंड की दर को मिलीसेकंड के अंतराल में अनुमति दिए गए अनुरोधों में बदल दिया जाता है. उदाहरण के लिए, 10 अनुरोध/सेकंड को इस तरह से स्मूथ किया जाता है:

1000 मिलीसेकंड (1 सेकंड) / 10 = 100 मिलीसेकंड का इंटरवल या हर 100 मिलीसेकंड में एक अनुरोध किया जा सकता है . अगर 100 मि॰से॰ के अंदर दूसरा अनुरोध किया जाता है, तो वह पूरा नहीं होगा. इसके अलावा, एक सेकंड में 11वां अनुरोध पूरा नहीं किया जा सकेगा.

सीमा पार होने पर

अगर तय समयसीमा के अंदर अनुरोधों की संख्या, तय सीमा से ज़्यादा हो जाती है, तो स्पाइक अरेस्ट, एचटीटीपी 503 स्टेटस के साथ गड़बड़ी का यह मैसेज दिखाता है:

{"error": "spike arrest policy violated"}

बफ़र जोड़ना

आपके पास नीति में बफ़र जोड़ने का विकल्प होता है. मान लें कि आपने बफ़र को 10 पर सेट किया है. आपको दिखेगा कि स्पाइक अरेस्ट की सीमा से ज़्यादा अनुरोध करने पर, एपीआई तुरंत गड़बड़ी का मैसेज नहीं दिखाता है. इसके बजाय, अनुरोधों को बफ़र किया जाता है. बफ़र किए गए अनुरोधों की संख्या, तय की गई संख्या से ज़्यादा नहीं होनी चाहिए. साथ ही, बफ़र किए गए अनुरोधों को अगली सही एक्ज़ीक्यूशन विंडो उपलब्ध होते ही प्रोसेस कर दिया जाता है. डिफ़ॉल्ट रूप से, bufferSize की वैल्यू 0 होती है.

अगर Edge की एक से ज़्यादा माइक्रो प्रोसेस चल रही हैं

अनुमति दिए गए अनुरोधों की संख्या, Edge Micro की चल रही वर्कर प्रोसेस की संख्या पर निर्भर करती है. स्पाइक अरेस्ट, हर वर्कर प्रोसेस के लिए अनुरोधों की तय सीमा का हिसाब लगाता है. डिफ़ॉल्ट रूप से, Edge Micro प्रोसेस की संख्या, उस मशीन पर मौजूद सीपीयू की संख्या के बराबर होती है जिस पर Edge Micro इंस्टॉल किया गया है. हालांकि, start कमांड पर --processes विकल्प का इस्तेमाल करके, Edge Micro शुरू करते समय वर्कर प्रोसेस की संख्या को कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, अगर आपको किसी तय समय में 100 अनुरोध मिलने पर स्पाइक अरेस्ट की सुविधा ट्रिगर करनी है और आपने --processes 4 विकल्प के साथ Edge Microgateway शुरू किया है, तो स्पाइक अरेस्ट कॉन्फ़िगरेशन में allow: 25 सेट करें. संक्षेप में, सामान्य नियम यह है कि allow config पैरामीटर को "ज़रूरत के मुताबिक स्पाइक रोकने की संख्या / प्रोसेस की संख्या" वैल्यू पर सेट करें.

कोटा प्लगिन का इस्तेमाल करना

कोटा से पता चलता है कि कोई ऐप्लिकेशन, एपीआई को एक घंटे, दिन, हफ़्ते या महीने में कितने अनुरोध सबमिट कर सकता है. जब कोई ऐप्लिकेशन, कोटे की सीमा तक पहुंच जाता है, तो बाद के एपीआई कॉल अस्वीकार कर दिए जाते हैं. यह भी देखें कि स्पाइक अरेस्ट और कोटा में क्या अंतर है?.

कोटा प्लगिन जोड़ना

प्लगिन जोड़ना और उन्हें कॉन्फ़िगर करना लेख पढ़ें.

Apigee Edge में प्रॉडक्ट कॉन्फ़िगरेशन

एपीआई प्रॉडक्ट कॉन्फ़िगर करने के लिए, Apigee Edge के यूज़र इंटरफ़ेस में कोटा कॉन्फ़िगर किए जाते हैं. आपको यह जानने की ज़रूरत है कि किस प्रॉडक्ट में, कोटे के हिसाब से इस्तेमाल की जा सकने वाली माइक्रोगेटवे-अवेयर प्रॉक्सी मौजूद है. इस प्रॉडक्ट को डेवलपर ऐप्लिकेशन में जोड़ा जाना चाहिए. जब डेवलपर ऐप्लिकेशन में मौजूद कुंजियों का इस्तेमाल करके, पुष्टि किए गए एपीआई कॉल किए जाते हैं, तब कोटा उन एपीआई कॉल पर लागू होगा.

  1. अपने Apigee Edge संगठन के खाते में लॉग इन करें.
  2. Edge के यूज़र इंटरफ़ेस (यूआई) में, उस प्रॉडक्ट को खोलें जो माइक्रोगेटवे के साथ काम करने वाली उस प्रॉक्सी से जुड़ा है जिस पर आपको कोटा लागू करना है.
    1. यूज़र इंटरफ़ेस (यूआई) में, पब्लिश करें मेन्यू से प्रॉडक्ट चुनें.
    2. वह प्रॉडक्ट खोलें जिसमें मौजूद एपीआई पर आपको कोटा लागू करना है.
    3. बदलाव करें पर क्लिक करें.
    4. कोटा फ़ील्ड में, कोटा इंटरवल तय करें. उदाहरण के लिए, हर मिनट में 100 अनुरोध. इसके अलावा, हर दो घंटे में 50,000 अनुरोध किए जा सकते हैं.

  1. सेव करें पर क्लिक करें.
  2. पक्का करें कि प्रॉडक्ट को डेवलपर ऐप्लिकेशन में जोड़ा गया हो. पुष्टि किए गए एपीआई कॉल करने के लिए, आपको इस ऐप्लिकेशन से कुंजियों की ज़रूरत होगी.

कोटे के लिए कॉन्फ़िगरेशन का सैंपल

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

कोटे के लिए कॉन्फ़िगरेशन के विकल्प

कोटा प्लगिन को कॉन्फ़िगर करने के लिए, अपनी कॉन्फ़िगरेशन फ़ाइल में quotas एलिमेंट जोड़ें. ऐसा करने का तरीका यहां दिए गए उदाहरण में दिखाया गया है:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
    isHTTPStatusTooManyRequestEnabled: true
...
विकल्प ब्यौरा
bufferSize

(पूर्णांक) bufferSize कॉन्फ़िगरेशन की मदद से, यह तय किया जा सकता है कि Edge Microgateway, Apigee Edge के साथ अपने कोटे की गिनती को कितनी बार सिंक करे. bufferSize को समझने के लिए, कॉन्फ़िगरेशन का यह उदाहरण देखें:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

अगर कोटा इंटरवल "मिनट" पर सेट है, तो डिफ़ॉल्ट रूप से माइक्रोगेटवे, हर पांच सेकंड में Apigee Edge के साथ अपने कोटा काउंटर को सिंक करता है. ऊपर दिए गए कॉन्फ़िगरेशन से पता चलता है कि अगर एपीआई प्रॉडक्ट में कोटा इंटरवल को "minute" पर सेट किया जाता है, तो Edge Microgateway, Edge के साथ सिंक करेगा. ऐसा हर 500 अनुरोधों के बाद या पांच सेकंड के बाद होगा. इनमें से जो भी पहले होगा, उसके हिसाब से सिंक किया जाएगा. ज़्यादा जानकारी के लिए, कोटा की गिनती के तरीके के बारे में जानकारी लेख पढ़ें.

समय की इन इकाइयों का इस्तेमाल किया जा सकता है: minute, hour, day, week, month, और default.

isHTTPStatusTooManyRequestEnabled

यह कुट प्लगिन को कॉन्फ़िगर करता है, ताकि कोटे का उल्लंघन होने पर वह स्टेटस 403 के बजाय एचटीटीपी 429 रिस्पॉन्स स्टेटस दिखाए.

डिफ़ॉल्ट: false. डिफ़ॉल्ट रूप से या अगर फ़्लैग को false पर सेट किया जाता है, तो कोटा खत्म होने पर कोटा, एचटीटीपी स्टेटस 403 दिखाता है.

अगर फ़्लैग को true पर सेट किया जाता है, तो कोटा पूरा होने पर कोटा, एचटीटीपी स्टेटस 429 दिखाता है.

एचटीटीपी रिटर्न स्टेटस को डिफ़ॉल्ट रूप से 429 पर सेट करने के लिए, इस कॉन्फ़िगरेशन का इस्तेमाल करें:

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
...
failOpen इस सुविधा के चालू होने पर, अगर कोटा प्रोसेस करने से जुड़ी कोई गड़बड़ी होती है या Edge को "कोटा लागू करें" अनुरोध भेजने पर, रिमोट कोटा काउंटर अपडेट नहीं होते हैं, तो कोटा को सिर्फ़ स्थानीय काउंट के आधार पर प्रोसेस किया जाएगा. ऐसा तब तक होगा, जब तक रिमोट कोटा सिंक नहीं हो जाता. इन दोनों मामलों में, अनुरोध ऑब्जेक्ट में quota-failed-open फ़्लैग सेट किया जाता है.

"fail open" सुविधा के लिए कोटा चालू करने के लिए, यह कॉन्फ़िगरेशन सेट करें:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId इस फ़्लैग को true पर सेट करें, ताकि कोटे के जवाबों में MP (मैसेज प्रोसेसर) आईडी की लॉगिंग चालू की जा सके.

इस सुविधा का इस्तेमाल करने के लिए, आपको यह कॉन्फ़िगरेशन सेट करना होगा:

edgemicro:
...
quotas:
  useDebugMpId: true
...

useDebugMpId सेट होने पर, Edge से मिलने वाले कोटा रिस्पॉन्स में एमपी आईडी शामिल होगा. साथ ही, इसे Edge Microgateway से लॉग किया जाएगा. उदाहरण के लिए:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis अगर इसे true पर सेट किया जाता है, तो प्लगिन, कोटा बैकिंग स्टोर के लिए Redis का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, कोटा के लिए Redis बैकिंग स्टोर का इस्तेमाल करना लेख पढ़ें.

यह समझना कि कोटा कैसे गिने जाते हैं

अगर कोटा इंटरवल "मिनट" पर सेट है, तो डिफ़ॉल्ट रूप से माइक्रोगेटवे, हर पांच सेकंड में Apigee Edge के साथ अपने कोटा काउंटर को सिंक करता है. अगर इंटरवल को "मिनट" से ज़्यादा पर सेट किया जाता है, जैसे कि "हफ़्ता" या "महीना", तो डिफ़ॉल्ट रूप से रीफ़्रेश होने की अवधि 1 मिनट होती है.

यह ध्यान रखना ज़रूरी है कि Apigee Edge पर तय किए गए एपीआई प्रॉडक्ट में, कोटा इंटरवल तय किए जाते हैं. कोटा इंटरवल से पता चलता है कि एक मिनट, घंटे, दिन, हफ़्ते या महीने में कितने अनुरोध किए जा सकते हैं. उदाहरण के लिए, प्रॉडक्ट A के लिए कोटा इंटरवल, हर मिनट में 100 अनुरोध हो सकता है. वहीं, प्रॉडक्ट B के लिए कोटा इंटरवल, हर घंटे में 10,000 अनुरोध हो सकता है.

Edge Microgateway quota प्लगिन का YAML कॉन्फ़िगरेशन, कोटा इंटरवल सेट नहीं करता है. इसके बजाय, यह उस फ़्रीक्वेंसी को अडजस्ट करने का तरीका बताता है जिस पर Edge Microgateway का लोकल इंस्टेंस, Apigee Edge के साथ अपने कोटा की गिनती को सिंक करता है.

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

  • प्रॉडक्ट A के लिए, हर मिनट में 100 अनुरोध करने का कोटा है
  • प्रॉडक्ट B के लिए, हर घंटे 5,000 अनुरोधों का कोटा है
  • प्रॉडक्ट C के लिए, हर महीने 10,00,000 अनुरोधों का कोटा है

कोटा सेटिंग को ध्यान में रखते हुए, Edge Microgateway quota प्लगिन को कैसे कॉन्फ़िगर किया जाना चाहिए? सबसे सही तरीका यह है कि Edge Microgateway को ऐसे सिंक इंटरवल के साथ कॉन्फ़िगर किया जाए जो एपीआई प्रॉडक्ट में तय किए गए कोटा इंटरवल से कम हों. उदाहरण के लिए:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

इस कॉन्फ़िगरेशन में, पहले बताए गए एपीआई प्रॉडक्ट के लिए सिंक करने के इन इंटरवल के बारे में बताया गया है:

  • प्रॉडक्ट A को "मिनट" के इंटरवल पर सेट किया गया है. Edge Microgateway, Edge के साथ हर 50वें अनुरोध या पांच सेकंड के बाद सिंक होगा. इन दोनों में से जो भी पहले होगा उसी के हिसाब से सिंक होगा.
  • प्रॉडक्ट B को "घंटे" के इंटरवल पर सेट किया गया है. Edge Microgateway, हर 2,000वें अनुरोध या एक मिनट के बाद Edge के साथ सिंक होगा. इन दोनों में से जो भी पहले होगा उसके हिसाब से सिंक होगा.
  • प्रॉडक्ट C के लिए, "महीने" का इंटरवल सेट किया गया है. Edge Microgateway, Edge के साथ हर अनुरोध के बाद या हर एक मिनट में सिंक होगा. इन दोनों में से जो भी पहले होगा उसके हिसाब से सिंक होगा.

जब भी माइक्रोगेटवे इंस्टेंस, Edge के साथ सिंक होता है, तब माइक्रोगेटवे के कोटे की संख्या को वापस पाए गए कोटे की संख्या पर सेट किया जाता है.

bufferSize सेटिंग की मदद से, यह तय किया जा सकता है कि कोटा काउंटर को Edge के साथ कैसे सिंक किया जाए. ज़्यादा ट्रैफ़िक होने पर, bufferSize सेटिंग की मदद से, टाइम के हिसाब से होने वाले डिफ़ॉल्ट सिंक के ट्रिगर होने से पहले, बफ़र काउंटर को सिंक किया जा सकता है.

कोटे के स्कोप के बारे में जानकारी

कोटा की गिनती, किसी संगठन के एनवायरमेंट के हिसाब से की जाती है. इस स्कोप को हासिल करने के लिए, Edge Microgateway एक कोटा आइडेंटिफ़ायर बनाता है. यह "org + env + appName + productName" का कॉम्बिनेशन होता है.

कोटे के लिए Redis बैकिंग स्टोर का इस्तेमाल करना

कोटे के लिए Redis बैकिंग स्टोर का इस्तेमाल करने के लिए, उसी कॉन्फ़िगरेशन का इस्तेमाल करें जिसका इस्तेमाल Synchronizer सुविधा के लिए किया गया था. कोटा स्टोरेज के लिए Redis का इस्तेमाल करने के लिए, यहां दिया गया बुनियादी कॉन्फ़िगरेशन ज़रूरी है:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
edgemicro.redis* पैरामीटर के बारे में ज़्यादा जानने के लिए, सिंक्रनाइज़र का इस्तेमाल करना लेख पढ़ें.

कोटा प्लगिन की जांच करना

कोटा खत्म होने पर, क्लाइंट को एचटीटीपी 403 स्टेटस दिखाया जाता है. साथ ही, यह मैसेज दिखता है:

{"error": "exceeded quota"}

स्पाइक अरेस्ट और कोटा में क्या अंतर है?

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

कोटा नीति का इस्तेमाल, डेवलपर और पार्टनर के साथ कारोबारी समझौते या एसएलए लागू करने के लिए करें. इसका इस्तेमाल, ऑपरेशनल ट्रैफ़िक मैनेज करने के लिए न करें. उदाहरण के लिए, किसी कोटे का इस्तेमाल, बिना शुल्क वाली सेवा के लिए ट्रैफ़िक को सीमित करने के लिए किया जा सकता है. वहीं, पैसे चुकाकर सेवा इस्तेमाल करने वाले लोगों को पूरा ऐक्सेस दिया जा सकता है.

एपीआई ट्रैफ़िक में अचानक होने वाली बढ़ोतरी से बचने के लिए, स्पाइक अरेस्ट का इस्तेमाल करें. आम तौर पर, स्पाइक अरेस्ट का इस्तेमाल संभावित DDoS या अन्य नुकसान पहुंचाने वाले हमलों को रोकने के लिए किया जाता है.