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

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

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

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

<!-- /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. Поток кода с цепочкой прокси

Дальнейшее чтение