Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Прокси-сервер API — это интерфейс для клиентских приложений, используемый для подключения к серверным службам. Apigee Edge предоставляет несколько способов подключения к серверным службам через прокси-сервер API:
- TargetEndpoint для подключения к любым службам HTTP/HTTP, NodeJS или Hosted Target.
- Политика ServiceCallout для вызова любой внешней службы до или после вызова целевого сервера в TargetEndpoint .
- Пользовательский код, добавленный в политику JavaScript или политику JavaCallout для подключения к серверным службам.
Постоянные соединения
Постоянное соединение HTTP , также называемое поддержанием активности HTTP или повторным использованием соединения HTTP, представляет собой концепцию, которая позволяет одному TCP- соединению отправлять и получать несколько HTTP-запросов /ответов вместо открытия нового соединения для каждой пары запрос/ответ.
Apigee Edge использует постоянное соединение для связи с серверными службами. По умолчанию соединение остается активным в течение 60 секунд. То есть, если соединение простаивает в пуле соединений более 60 секунд, то соединение закрывается.
Период ожидания активности настраивается с помощью свойства с именем keepalive.timeout.millis
, указанного в конфигурации TargetEndpoint прокси-сервера API. Например, период поддержания активности можно установить на 30 секунд для конкретной серверной службы в TargetEndpoint.
В приведенном ниже примере в конфигурации TargetEndpoint для параметра keepalive.timeout.millis
установлено значение 30 секунд:
<!-- /antipatterns/examples/disable-persistent-connections-1.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections </TargetEndpoint>
В приведенном выше примере keepalive.timeout.millis
управляет поведением поддержания активности для конкретной серверной службы в прокси-сервере API. Существует также свойство, которое контролирует сохранение активности для всех серверных служб во всех прокси. HTTPTransport.keepalive.timeout.millis
можно настроить в компоненте процессора сообщений. Это свойство также имеет значение по умолчанию — 60 секунд. Внесение любых изменений в это свойство влияет на поведение поддержания активности соединения между Apigee Edge и всеми серверными службами во всех прокси-серверах API.
Антипаттерн
Отключение постоянных соединений (поддержание активности) путем установки свойства keepalive.timeout.millis
на 0 в конфигурации TargetEndpoint конкретного прокси-сервера API или установки HTTPTransport.keepalive.timeout.millis
на 0 на процессорах сообщений не рекомендуется, поскольку это повлияет на производительность. .
В приведенном ниже примере конфигурация TargetEndpoint отключает постоянные (поддерживающие активность) соединения для определенной серверной службы, устанавливая для keepalive.timeout.millis
значение 0:
<!-- /antipatterns/examples/disable-persistent-connections-2.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">0</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
Если поддерживающие соединения отключены для одной или нескольких серверных служб, Edge должен открывать новое соединение для каждого нового запроса к целевым внутренним службам. Если серверная часть использует HTTPs, Edge также будет выполнять SSL-подтверждение для каждого нового запроса, увеличивая общую задержку запросов API.
Влияние
- Увеличивает общее время ответа на запросы API, поскольку Apigee Edge должен открывать новое соединение и выполнять SSL-подтверждение для каждого нового запроса.
- Соединения могут быть исчерпаны в условиях высокой нагрузки, поскольку для освобождения соединений обратно в систему требуется некоторое время.
Лучшая практика
- Серверные службы должны учитывать и обрабатывать постоянное соединение HTTP в соответствии со стандартами HTTP 1.1.
- Серверные службы должны ответить заголовком
Connection:keep-alive
если они могут обрабатывать постоянные (поддерживать активные) соединения. - Серверные службы должны ответить заголовком
Connection:close
, если они не могут обрабатывать постоянные соединения.
Реализация этого шаблона гарантирует, что Apigee Edge сможет автоматически обрабатывать постоянное или непостоянное соединение с серверными службами, не требуя внесения изменений в прокси-сервер API.