Вы просматриваете документацию 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();
Поток кода
Чтобы понять, почему это имеет свойственный недостаток, нам нужно понять маршрут, по которому проходит запрос, как показано на диаграмме ниже:
Как показано на схеме, запрос проходит через несколько распределенных компонентов, включая маршрутизатор и процессор сообщений.
В приведенных выше примерах кода вызов прокси-сервера 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 выполняется в том же процессоре сообщений; в результате он избегает сетевого перехода, как показано на следующем рисунке: