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

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Edge umożliwia wywoływanie jednego proxy interfejsu API z innego proxy interfejsu API. Ta funkcja jest przydatna zwłaszcza wtedy, gdy masz proxy interfejsu API, które zawiera kod wielokrotnego użytku, z którego mogą korzystać inne proxy interfejsu API.

Antywzorzec

Wywoływanie jednego proxy interfejsu API z innego za pomocą HTTPTargetConnection w docelowym punkcie końcowym lub niestandardowego kodu JavaScript powoduje dodatkowy przeskok sieciowy.

Wywoływanie proxy 2 z proxy 1 za pomocą HTTPTargetConnection

Poniższy przykładowy kod wywołuje proxy 2 z proxy 1 za pomocą HTTPTargetConnection:

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

Wywoływanie proxy 2 z proxy 1 za pomocą kodu JavaScript

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

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

Przepływ kodu

Aby zrozumieć, dlaczego ma to wrodzoną wadę, musimy zrozumieć ścieżkę, którą pokonuje żądanie, co ilustruje poniższy diagram:

Rysunek 1: Przepływ kodu

Jak widać na diagramie, żądanie przechodzi przez wiele rozproszonych komponentów, w tym router i procesor komunikatów.

W powyższych próbkach kodu wywoływanie proxy 2 z proxy 1 oznacza, że żądanie musi być kierowane w czasie wykonywania przez tradycyjną ścieżkę (czyli router > MP). Byłoby to podobne do wywoływania interfejsu API z klienta, co powoduje wiele przeskoków sieciowych, które zwiększają opóźnienie. Te przeskoki są niepotrzebne, ponieważ żądanie proxy 1 „dotarło” już do MP.

Wpływ

Wywoływanie jednego proxy interfejsu API z innego proxy interfejsu API powoduje niepotrzebne przeskoki sieciowe, czyli żądanie musi zostać przekazane z jednego procesora komunikatów do innego procesora komunikatów.

Sprawdzona metoda

  • Do wywoływania jednego proxy interfejsu API z innego używaj funkcji łączenia proxy. Łączenie proxy jest bardziej wydajne, ponieważ używa lokalnego połączenia do odwoływania się do docelowego punktu końcowego (innego proxy interfejsu API).

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

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

    Wywoływane proxy interfejsu API jest wykonywane w tym samym procesorze komunikatów, dzięki czemu unika przeskoku sieciowego, jak pokazano na rysunku poniżej:

    Rysunek 2. Przepływ kodu z łączeniem proxy

Więcej informacji