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

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Sie lesen die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

Mit Apigee können Sie API-Proxys von anderen API-Proxys aufrufen. Diese Funktion ist besonders nützlich, wenn ein API-Proxy wiederverwendbaren Code enthält, der von anderen API-Proxys genutzt werden kann.

Anti-Pattern

Wird ein API-Proxy von einem anderen aufgerufen, entweder mit HTTPTargetConnection im Zielendpunkt oder über benutzerdefinierten JavaScript-Code, wird zusätzlicher Netzwerk-Hop verursacht.

Proxy 2 von Proxy 1 mit HTTPTargetConnection aufrufen

Folgendes Codebeispiel ruft Proxy 2 von Proxy 1 über HTTPTargetConnection auf:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>https://api-test.example.com/proxy2</URL>
</HTTPTargetConnection>

Proxy 2 von Proxy 1 vom JavaScript-Code aufrufen

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

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('https://api-test.example.com/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):

1) Der Client sendet eine Anfrage an Proxy 1, 2) Anfrage von Proxy 1 an Proxy 2 verursacht Netzwerk-Hop, 3) Anfrage von Proxy 2 an Ziel.
Abbildung 1: Code-Ablauf

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

In den obigen Codebeispielen führt der Aufruf von Proxy 2 von Proxy 1 dazu, dass die Anfrage zur Laufzeit über die herkömmliche Route (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 Proxy 1-Anfrage die MP-Datei bereits erreicht hat.

Auswirkungen

Wird ein API-Proxy von einem anderen API-Proxy aufgerufen, so bedingt dies unnötige Netzwerk-Hops. Die Anfrage muss also von einem Message Processor an einen anderen Message Processor weitergeleitet 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:

    1) Der Client sendet eine Anfrage an Proxy 1, 2) Anfrage von Proxy 1 an Proxy 2, der über einen pseudolokalen Aufruf erfolgt, 3) Anfrage von Proxy 2 an Ziel.
    Abbildung 2: Code-Ablauf mit Proxy-Verkettung

Weitere Informationen