Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Serwer proxy interfejsu API to interfejs aplikacji klienckich używany do łączenia się z usługami backendu. Apigee Edge zapewnia wiele sposobów łączenia z usługami backendu przez serwer proxy interfejsu API:
- TargetEndpoint do łączenia z dowolnymi usługami HTTP/HTTP, NodeJS lub hostowanymi usługami docelowymi.
- zasada ServiceCallout, która służy do wywoływania dowolnej usługi zewnętrznej przed wywołaniem serwera docelowego lub po nim. w polu TargetEndpoint.
- Do zasad JavaScriptu lub zasad JavaCallout dodano niestandardowy kod umożliwiający połączenie z usługami backendu.
Połączenia trwałe
Trwałe połączenie HTTP, tzw. utrzymywania aktywności HTTP lub ponownego użycia połączeń HTTP. Pozwala na połączenie TCP do wysyłania i odbieranie wielu żądań HTTP/odpowiedzi, zamiast otwierać nowe połączenie dla każdej pary żądania/odpowiedzi.
Apigee Edge używa trwałego połączenia do komunikacji z usługami backendu. Połączenie zostaje zachowane domyślnie aktywne przez 60 sekund. Oznacza to, że jeśli połączenie w puli połączeń jest nieaktywne przez ponad 60 sekund i zostanie ono zamknięte.
Limit czasu utrzymywania aktywności można skonfigurować za pomocą właściwości o nazwie keepalive.timeout.millis
,
określona w konfiguracji TargetEndpoint serwera proxy interfejsu API. Na przykład funkcja podtrzymywania życia
okres można ustawić na 30 sekund dla określonej usługi backendu w docelowym punkcie końcowym.
W poniższym przykładzie wartość keepalive.timeout.millis
w docelowym punkcie końcowym jest ustawiona na 30 sekund
Konfiguracja:
<!-- /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>
W powyższym przykładzie parametr keepalive.timeout.millis
kontroluje zachowanie aktywności
z określonej usługi backendu na serwerze proxy API. Istnieje też usługa, która kontroluje zachowanie aktywności
we wszystkich usługach backendu we wszystkich serwerach proxy. HTTPTransport.keepalive.timeout.millis
można skonfigurować w komponencie procesora wiadomości. Ta właściwość ma również wartość domyślną 60.
sek. Wprowadzanie jakichkolwiek zmian w tej usłudze wpływa na utrzymanie aktywnego połączenia między
Apigee Edge i wszystkie usługi backendu na wszystkich serwerach proxy interfejsu API.
Antywzór
Wyłączenie trwałych połączeń (utrzymywania aktywności) przez ustawienie właściwości keepalive.timeout.millis
na 0 w konfiguracji punktu końcowego określonego dla określonego serwera proxy interfejsu API lub ustawiając parametr
Wartość HTTPTransport.keepalive.timeout.millis
na 0 w procesorach wiadomości nie jest rekomendowana jako
wpłynie to na wydajność.
W przykładzie poniżej konfiguracja punktu końcowego (TargetEndpoint) wyłącza trwałe (utrzymujące) połączenia
dla określonej usługi backendu przez ustawienie keepalive.timeout.millis
na 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>
Jeśli dla co najmniej 1 usługi backendu wyłączone są utrzymujące aktywne połączenia, Edge musi otworzyć plik nowe połączenie dla każdego nowego żądania z docelowymi usługami backendu. Jeśli backend to HTTP, Edge będzie również uzgadniać połączenie SSL dla każdego nowego żądania, co zwiększy ogólną czasu oczekiwania żądań do interfejsu API.
Wpływ
- Wydłuża ogólny czas odpowiedzi na żądania do interfejsu API, ponieważ Apigee Edge musi otworzyć nowe połączenie i uzgadniania połączenia SSL dla każdego nowego żądania.
- Połączenia mogą się wyczerpywać w warunkach dużego natężenia ruchu, ponieważ zwalnianie połączeń zajmuje trochę czasu z powrotem do systemu.
Sprawdzona metoda
- Usługi backendu powinny uwzględniać i obsługiwać trwałe połączenia HTTP zgodnie z protokołem HTTP 1.1 do standardów statystycznych.
- Usługi backendu powinny odpowiedzieć nagłówkiem
Connection:keep-alive
, jeśli są w stanie obsługi trwałych połączeń (utrzymujących aktywność). - Usługi backendu powinny odpowiedzieć nagłówkiem
Connection:close
, jeśli nie mogą obsługi trwałych połączeń.
Wdrożenie tego wzorca zapewni, że Apigee Edge automatycznie będzie obsługiwać zasoby trwałe lub nietrwałe połączenia z usługami backendu bez konieczności wprowadzania zmian na serwerze proxy API.