Anti-Pattern: Proxy innerhalb eines Proxys mit benutzerdefiniertem Code oder Ziel aufrufen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Mit Edge können Sie einen API-Proxy von einem anderen API-Proxy aufrufen. Diese Funktion ist besonders nützlich, wenn Sie einen API-Proxy haben, der wiederverwendbaren Code enthält, der von anderen API-Proxys verwendet werden kann.

Anti-Pattern

Wenn ein API-Proxy von einem anderen API-Proxy aufgerufen wird, entweder mit HTTPTargetConnection im Zielendpunkt oder mit benutzerdefiniertem JavaScript-Code, führt dies zu einem zusätzlichen Netzwerk-Hop.

Rufen Sie Proxy 2 von Proxy 1 mit HTTPTargetConnection auf.

Im folgenden Codebeispiel wird Proxy 2 von Proxy 1 über HTTPTargetConnection aufgerufen:

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

Rufen Sie Proxy 2 über Proxy 1 aus dem JavaScript-Code auf.

Im nächsten Codebeispiel wird Proxy 2 mithilfe von JavaScript aus Proxy 1 aufgerufen:

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

Codeablauf

Um zu verstehen, warum dies einen inhärenten Nachteil hat, müssen wir die Route verstehen, die Anfragen nehmen (im folgenden Diagramm dargestellt):

Abbildung 1: Codeablauf

Wie im Diagramm dargestellt, durchläuft eine Anfrage mehrere verteilte Komponenten, darunter Router und Nachrichtenprozessor.

In den obigen Codebeispielen bedeutet das Aufrufen von Proxy 2 von Proxy 1, dass die Anfrage zur Laufzeit über die herkömmliche Route (d. h. Router > MP) geleitet werden muss. Dies ist vergleichbar mit dem Aufruf einer API durch einen Client, wodurch mehrere Netzwerk-Hops entstehen, die die Latenz erhöhen. Diese Hops sind nicht erforderlich, da die Anfrage von Proxy 1 bereits den MP „erreicht“ hat.

Auswirkungen

Das Aufrufen eines API-Proxys von einem anderen API-Proxy verursacht unnötige Netzwerk-Hops, d. h. die Anfrage muss von einem Message Processor an einen anderen Message Processor übergeben werden.

Best Practice

  • Verwenden Sie das Feature zur Proxy-Verkettung, um einen API-Proxy von einem anderen aufzurufen. Die Proxy-Verkettung ist effizienter, da sie eine lokale Verbindung zum Verweis auf den Zielendpunkt (einen anderen API-Proxy) verwendet.

    Das Codebeispiel zeigt die Proxy-Verkettung mit LocalTargetConnection in der Endpunktdefinition:

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

    Der aufgerufene API-Proxy wird innerhalb desselben Message Processor ausgeführt. Infolgedessen wird der Netzwerk-Hop vermieden, wie in der folgenden Abbildung dargestellt:

    Abbildung 2: Codefluss mit Proxy-Verkettung

Weitere Informationen