Antipattern: richiama un proxy all'interno di un proxy utilizzando codice personalizzato o come destinazione

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

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

Antipattern

La chiamata di un proxy API da un altro utilizzando HTTPTargetConnection nell'endpoint di destinazione o il codice JavaScript personalizzato determina 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>http://myorg-test.apigee.net/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('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

Flusso codice

Per comprendere il motivo per cui questo presenta uno svantaggio intrinseco, dobbiamo capire il percorso intrapreso da una richiesta, come illustrato nel diagramma seguente:

Figura 1: flusso del codice

Come illustrato nel diagramma, una richiesta attraversa più componenti distribuiti, tra cui il router e il processore di messaggi.

Negli esempi di codice precedenti, richiamare il proxy 2 dal proxy 1 significa che la richiesta deve essere instradata tramite la route tradizionale (ovvero router > MP) in fase di runtime. Questo sarebbe come richiamare un'API da un client, creando così più hop di rete che aumentano la latenza. Questi hop sono non necessari considerando che la richiesta del proxy 1 ha già "raggiunto" l'MP.

Impatto

La chiamata di un proxy API da un altro proxy API comporta hop di rete non necessari, ovvero la richiesta deve essere trasmessa da un processore di messaggi a un altro.

Best practice

  • Utilizza la funzionalità di concatenamento di proxy per richiamare un proxy API da un altro. Il concatenamento dei 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 di proxy utilizzando LocalTargetConnection nella definizione dell'endpoint:

    <!-- /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:

    Figura 2: flusso di codice con concatenamento di proxy

Per approfondire