Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Un proxy API è un'interfaccia per le applicazioni client utilizzata per connettersi ai servizi di backend. Apigee Edge offre diversi modi per connettersi ai servizi di backend tramite un proxy API:
- TargetEndpoint per la connessione a qualsiasi servizio HTTP/HTTP, NodeJS o di destinazione ospitata.
- Criterio di ServiceCallout per richiamare qualsiasi servizio esterno prima o dopo la chiamata del server di destinazione in TargetEndpoint.
- È stato aggiunto un codice personalizzato al criterio JavaScript o al criterio JavaCallout per connettersi ai servizi di backend.
Connessioni permanenti
Connessione permanente HTTP chiamato anche keep-alive HTTP o riutilizzo della connessione HTTP, è un concetto che consente Connessione TCP per inviare e Ricevere più richieste/risposte HTTP anziché aprire una nuova connessione per ogni coppia richiesta/risposta.
Apigee Edge utilizza una connessione permanente per la comunicazione con i servizi di backend. La connessione rimane attivo per 60 secondi per impostazione predefinita. Vale a dire, se una connessione è inattiva nel pool di connessioni per per più di 60 secondi, la connessione si chiude.
Il periodo di timeout keep-alive è configurabile tramite una proprietà denominata keepalive.timeout.millis
.
specificato nella configurazione TargetEndpoint di un proxy API. Ad esempio, keep-alive
può essere impostato su 30 secondi per un servizio di backend specifico nel TargetEndpoint.
Nell'esempio seguente, keepalive.timeout.millis
è impostato su 30 secondi nel TargetEndpoint
configurazione:
<!-- /antipatterns/examples/disable-persistent-connections-1.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections </TargetEndpoint>
Nell'esempio precedente, keepalive.timeout.millis
controlla il comportamento keep alive per un
un servizio di backend specifico
in un proxy API. C'è anche una proprietà che controlla il comportamento mantenere attivo
per tutti i servizi di backend in tutti i proxy. HTTPTransport.keepalive.timeout.millis
configurabili nel componente
Processore di messaggi. Questa proprietà ha anche un valore predefinito di 60
secondi. Eventuali modifiche apportate a questa proprietà influiscono sul comportamento della connessione keepalive tra
Apigee Edge e tutti i servizi di backend in tutti i proxy API.
Antipattern
Disabilita le connessioni permanenti (keep-alive) impostando la proprietà keepalive.timeout.millis
su 0 nella configurazione di TargetEndpoint di un proxy API specifico o impostando
Da HTTPTransport.keepalive.timeout.millis
a 0 sui processori di messaggi non è consigliato come
perché ciò influisce sulle prestazioni.
Nell'esempio seguente, la configurazione di TargetEndpoint disabilita le connessioni permanenti (keep alive)
per un servizio di backend specifico impostando keepalive.timeout.millis
su 0:
<!-- /antipatterns/examples/disable-persistent-connections-2.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">0</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
Se le connessioni keep-alive sono disabilitate per uno o più servizi di backend, Edge deve aprire un una nuova connessione per ogni nuova richiesta ai servizio di backend di destinazione. Se il backend è HTTPS, Edge eseguirà inoltre l'handshake SSL per ogni nuova richiesta, aggiungendo latenza delle richieste API.
Impatto
- Aumenta il tempo di risposta complessivo delle richieste API, in quanto Apigee Edge deve aprire una nuova connessione e eseguire l'handshake SSL per ogni nuova richiesta.
- Le connessioni potrebbero esaurirsi in condizioni di traffico elevato, in quanto occorre un po' di tempo per rilasciare le connessioni al sistema.
Best practice
- I servizi di backend devono rispettare e gestire la connessione permanente HTTP in conformità con HTTP 1.1 standard.
- I servizi di backend devono rispondere con un'intestazione
Connection:keep-alive
, se possibile per gestire le connessioni permanenti (keep-alive). - I servizi di backend devono rispondere con un'intestazione
Connection:close
se non sono in grado di farlo e gestire le connessioni permanenti.
L'implementazione di questo pattern garantirà che Apigee Edge possa gestire automaticamente dati permanenti o non persistenti connessione con i servizi di backend, senza richiedere modifiche al proxy API.