Antywzór: wywoływanie serwera proxy w ramach serwera proxy za pomocą kodu niestandardowego lub jako elementu docelowego

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Edge umożliwia wywoływanie jednego serwera proxy interfejsu API z innego serwera proxy interfejsu API. Ta funkcja jest przydatna zwłaszcza wtedy, gdy masz serwer proxy interfejsu API zawierający kod wielokrotnego użytku, który może być używany przez inne serwery proxy API.

Antywzór

Wywołanie jednego serwera proxy interfejsu API z innego za pomocą protokołu HTTPTargetConnection w docelowym punkcie końcowym lub niestandardowego kodu JavaScript skutkuje dodatkowym przeskokiem sieciowym.

Wywołaj serwer proxy 2 z serwera proxy 1 za pomocą HTTPTargetConnection

Ten przykładowy kod wywołuje serwer proxy 2 z serwera proxy 1 przy użyciu HTTPTargetConnection:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

Wywołaj serwer proxy 2 z serwera proxy 1 z kodu JavaScript

Następny przykładowy kod wywołuje serwer proxy 2 z serwera proxy 1 za pomocą JavaScriptu:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

Przepływ kodu

Aby zrozumieć, dlaczego jest to wrodzona wada, musimy poznać drogę, którą podąża dane żądanie, co przedstawia ten schemat:

Rysunek 1. Przepływ kodu

Jak pokazano na diagramie, żądanie przemierza wiele rozproszonych komponentów, w tym router i procesor wiadomości.

W powyższych przykładach kodu wywołanie serwera proxy 2 z serwera proxy 1 oznacza, że żądanie musi zostać przekierowane w czasie działania metodą tradycyjną (np.Router > MP). Przypomina to wywoływanie interfejsu API od klienta i tworzenie wielu przeskoków sieci, które zwiększają czas oczekiwania. Te przeskoki są niepotrzebne, ponieważ żądanie serwera proxy 1 „dotarło już do” przedstawiciela MP.

Wpływ

Wywołanie jednego serwera proxy interfejsu API z innego serwera proxy interfejsu API powoduje niepotrzebne przeskoki sieciowe, czyli żądanie, które musi zostać przekazane z jednego podmiotu do innego podmiotu przetwarzającego wiadomości.

Sprawdzona metoda

  • Do wywoływania jednego serwera proxy interfejsu API użyj funkcji łańcuch proxy. Łańcuch proxy jest wydajniejszy, ponieważ odwołuje się do docelowego punktu końcowego (innego serwera proxy interfejsu API) przy użyciu połączenia lokalnego.

    Przykładowy kod pokazuje łańcuch proxy za pomocą elementu LocalTargetConnection w definicji punktu końcowego:

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

    Wywołany serwer proxy interfejsu API jest uruchamiany w tym samym procesorze wiadomości, dzięki czemu unika przeskoku sieci, jak widać na tym ilustracji:

    Rysunek 2. Przepływ kodu z łańcuchem serwerów proxy

Więcej informacji