Antipattern: richiamare un proxy all'interno di un proxy utilizzando codice personalizzato o come target

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza Documentazione di Apigee Edge.

Apigee consente di richiamare un proxy API da un altro proxy API. Questa funzionalità è utile soprattutto se hai un proxy API che contiene codice riutilizzabile che può essere utilizzato da altri proxy API.

Antipattern

L'invocazione di un proxy API da un altro utilizzando HTTPTargetConnection nell'endpoint di destinazione o codice JavaScript personalizzato comporta un ulteriore hop di rete.

Richiama il proxy 2 dal proxy 1 utilizzando HTTPTargetConnection

Il seguente esempio di codice richiama il proxy 2 dal proxy 1 utilizzando HTTPTargetConnection:

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

Richiama il proxy 2 dal proxy 1 dal codice JavaScript

Il successivo esempio di codice richiama il proxy 2 dal proxy 1 utilizzando JavaScript:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('https://api-test.example.com/proxy2);
response.waitForComplete();

Flusso codice

Per capire perché questo ha uno svantaggio intrinseco, dobbiamo capire il percorso di una richiesta come illustrato nel diagramma seguente:

1) Il client effettua una richiesta al proxy 1, 2) La richiesta dal proxy 1 al proxy 2 comporta un hop di rete,
            3) Richiesta dal proxy 2 alla destinazione.
Figura 1: Flusso di codice

Come mostrato nel diagramma, una richiesta attraversa più componenti distribuiti, tra cui il router e il Message Processor.

Negli esempi di codice precedenti, richiamare il proxy 2 dal proxy 1 significa che la richiesta deve essere instradata tramite il percorso tradizionale (Router > MP) durante l'esecuzione. Sarebbe come chiamare un'API da un client, effettuando così più hop di rete che aggiungono alla latenza. Questi hop sono non necessari, poiché la richiesta del proxy 1 ha già raggiunto il server proxy.

Impatto

L'invocazione di un proxy API da un altro proxy API comporta hop di rete non necessari, ovvero la richiesta deve essere trasmessa da un Message Processor a un altro.

Best practice

  • Utilizza il proxy concatenamento per richiamare un proxy API da un altro. La catena di proxy è più efficiente in quanto utilizza la connessione locale per fare riferimento all'endpoint di destinazione (un altro proxy API).

    L'esempio di codice mostra il concatenamento del proxy utilizzando LocalTargetConnection nel tuo endpoint definizione:

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

    Il proxy API richiamato viene eseguito all'interno dello stesso processore di messaggi. di conseguenza, evita l'hop di rete, come mostrato nella figura seguente:

    1) Il client effettua una richiesta al proxy 1, 2) Richiesta dal proxy 1 al proxy 2 effettuata
                tramite psuedo-local call, 3) Richiesta dal proxy 2 al target.
    Figura 2: flusso di codice con accodamento di proxy

Per approfondire