एंटीपैटर्न: कस्टम कोड का इस्तेमाल करके या टारगेट के तौर पर प्रॉक्सी में प्रॉक्सी शुरू करें

यहां Apigee Edge से जुड़े दस्तावेज़ देखे जा रहे हैं.
Apigee X
से जुड़े दस्तावेज़ पर जाएं.
info

Edge की मदद से, एक एपीआई प्रॉक्सी से दूसरी एपीआई प्रॉक्सी को कॉल किया जा सकता है. यह सुविधा तब काम की होती है, जब आपके पास कोई ऐसी एपीआई प्रॉक्सी हो जिसमें दोबारा इस्तेमाल किया जा सकने वाला कोड हो. इस कोड का इस्तेमाल, दूसरी एपीआई प्रॉक्सी भी कर सकती हैं.

गलत तरीका

टारगेट एंडपॉइंट में HTTPTargetConnection या कस्टम JavaScript कोड का इस्तेमाल करके, एक एपीआई प्रॉक्सी से दूसरी एपीआई प्रॉक्सी को कॉल करने पर, नेटवर्क हॉप बढ़ जाता है.

HTTPTargetConnection का इस्तेमाल करके, प्रॉक्सी 1 से प्रॉक्सी 2 को कॉल करना

यहां दिए गए कोड के सैंपल में, HTTPTargetConnection का इस्तेमाल करके, प्रॉक्सी 1 से प्रॉक्सी 2 को कॉल किया गया है:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

JavaScript कोड का इस्तेमाल करके, प्रॉक्सी 1 से प्रॉक्सी 2 को कॉल करना

यहां दिए गए कोड सैंपल में, JavaScript का इस्तेमाल करके, प्रॉक्सी 1 से प्रॉक्सी 2 को कॉल किया गया है:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

कोड का फ़्लो

यह समझने के लिए कि इसमें क्या समस्या है, हमें यह समझना होगा कि कोई अनुरोध किस रास्ते से जाता है. इसके लिए, यहां दिया गया डायग्राम देखें:

पहली इमेज: कोड का फ़्लो

डायग्राम में दिखाया गया है कि कोई अनुरोध, डिस्ट्रिब्यूट किए गए कई कॉम्पोनेंट से होकर जाता है. इनमें, राऊटर और मैसेज प्रोसेसर भी शामिल हैं.

ऊपर दिए गए कोड के सैंपल में, प्रॉक्सी 1 से प्रॉक्सी 2 को कॉल करने का मतलब है कि रनटाइम के दौरान, अनुरोध को पारंपरिक तरीके से (यानी, राऊटर > एमपी) भेजा जाना चाहिए. यह किसी क्लाइंट से एपीआई को कॉल करने जैसा होगा. इससे नेटवर्क हॉप बढ़ जाते हैं और लेटेन्सी बढ़ जाती है. इन हॉप की ज़रूरत नहीं होती, क्योंकि प्रॉक्सी 1 का अनुरोध पहले ही एमपी तक "पहुंच" चुका होता है.

असर

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

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

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

    यहां दिए गए कोड के सैंपल में, आपके एंडपॉइंट की परिभाषा में LocalTargetConnection का इस्तेमाल करके, प्रॉक्सी चेनिंग दिखाई गई है:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>

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

    दूसरी इमेज: प्रॉक्सी चेनिंग के साथ कोड का फ़्लो

इस बारे में और पढ़ें