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

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

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

Антипаттерн

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

Вызов Proxy 2 из Proxy 1 с помощью HTTPTargetConnection

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

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

Вызовите Proxy 2 из Proxy 1 с помощью кода JavaScript.

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

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

Процесс входа

Чтобы понять, почему это является недостатком, нужно разобраться, как обрабатывается запрос. Это показано на схеме ниже.

Рисунок 1. Поток кода

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

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

Результат

При вызове одного прокси API из другого прокси API возникают ненужные переходы по сети, то есть запрос должен быть передан от одного Message Processor другому Message Processor.

Совет

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

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

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

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

    Рисунок 2. Поток кода с цепочкой прокси-серверов

Дополнительные материалы