Антипаттерн: вызов прокси внутри прокси с использованием специального кода или в качестве цели.

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Edge позволяет вызывать один API-прокси из другого API-прокси. Эта функция особенно полезна, если у вас есть API-прокси, содержащий многократно используемый код, который может применяться другими API-прокси.

Антипаттерн

Вызов одного API-прокси из другого с использованием HTTPTargetConnection в целевой конечной точке или пользовательского кода JavaScript приводит к дополнительному сетевому переходу.

Вызовите прокси 2 из прокси 1, используя HTTPTargetConnection.

Приведенный ниже пример кода вызывает прокси-сервер 2 из прокси-сервера 1 с использованием HTTPTargetConnection:

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

Вызов прокси 2 из прокси 1 из кода JavaScript

В следующем примере кода с помощью JavaScript вызывается прокси-сервер 2 из прокси-сервера 1:

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

Последовательность выполнения кода

Чтобы понять, почему это имеет существенный недостаток, нам необходимо разобраться в пути, который проходит запрос, как показано на диаграмме ниже:

Рисунок 1 : Схема выполнения кода

Как показано на диаграмме, запрос проходит через несколько распределенных компонентов, включая маршрутизатор и обработчик сообщений.

В приведенных выше примерах кода вызов прокси 2 из прокси 1 означает, что запрос должен быть маршрутизирован по традиционному маршруту (т.е. маршрутизатор > MP) во время выполнения. Это было бы похоже на вызов API с клиента, что привело бы к многочисленным сетевым переходам, увеличивающим задержку. Эти переходы излишни, поскольку запрос от прокси 1 уже «достиг» MP.

Влияние

Вызов одного API-прокси из другого API-прокси влечет за собой ненужные сетевые переходы, то есть запрос должен передаваться от одного обработчика сообщений к другому обработчику сообщений.

Передовая практика

  • Используйте функцию цепочки прокси для вызова одного API-прокси из другого. Цепочка прокси более эффективна, поскольку использует локальное соединение для ссылки на целевую конечную точку (другой API-прокси).

    В приведенном примере кода показано использование цепочки прокси-серверов с помощью LocalTargetConnection в определении конечной точки:

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

    Вызванный API-прокси выполняется в рамках того же обработчика сообщений; в результате этого удается избежать сетевого перехода, как показано на следующем рисунке:

    Рисунок 2 : Схема выполнения кода с использованием цепочки прокси-объектов.

Дополнительная информация