<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
API 프록시는 백엔드 서비스와 연결하는 데 사용되는 클라이언트 애플리케이션용 인터페이스입니다. Apigee Edge는 API 프록시를 통해 백엔드 서비스에 연결하는 다양한 방법을 제공합니다.
- TargetEndpoint: 모든 HTTP/HTTPS, NodeJS, Hosted Target 서비스에 연결합니다.
- ServiceCallout 정책: TargetEndpoint에서 대상 서버의 호출 전후에 외부 서비스를 호출합니다.
- 자바스크립트 정책 또는 JavaCallout 정책에 커스텀 코드를 추가하여 커스텀 서비스에 연결합니다.
영구 연결
HTTP 연결 유지 또는 HTTP 연결 재사용이라고도 하는 HTTP 영구 연결은 모든 요청/응답 쌍에 대해 새로운 연결을 여는 대신 단일 TCP 연결을 통해 여러 HTTP 요청/응답을 전송 및 수신할 수 있다는 개념입니다.
Apigee Edge는 백엔드 서비스와 통신하기 위해 영구 연결을 사용합니다. 연결은 기본적으로 60초 동안 유지됩니다. 즉, 연결 풀에서 연결이 60초 이상 유휴 상태이면 연결이 종료됩니다.
연결 유지 시간 제한 기간은 API 프록시의 TargetEndpoint 구성에 지정된 keepalive.timeout.millis
속성을 통해 구성할 수 있습니다. 예를 들어 TargetEndpoint의 특정 백엔드 서비스에 대한 연결 유지 기간을 30초로 설정할 수 있습니다.
아래 예시에서는 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 프록시의 모든 백엔드 서비스
안티패턴
특정 API 프록시의 TargetEndpoint 구성에서 keepalive.timeout.millis
속성을 0으로 설정하거나 메시지 프로세서에서 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 요청의 지연 시간
영향
- Apigee Edge에서 새 연결을 열어야 하므로 API 요청의 전체 응답 시간이 늘어납니다. SSL 핸드셰이크를 수행합니다.
- 시스템에 대한 연결을 해제하는 데 시간이 다소 걸리므로 트래픽 급증 상황에서는 연결이 소진될 수 있습니다.
권장사항
- 백엔드 서비스는 HTTP 1.1 표준에 따라 HTTP 영구 연결을 반영하고 처리해야 합니다.
- 백엔드 서비스는 영구(연결 유지) 연결을 처리할 수 있는 경우
Connection:keep-alive
헤더로 응답해야 합니다. - 백엔드 서비스는 영구 연결을 처리할 수 없는 경우에도
Connection:close
헤더로 응답해야 합니다.
이 패턴을 구현하면 Apigee Edge가 영구적이거나 비영구적인 작업을 자동으로 처리할 수 있습니다. API 프록시를 변경할 필요 없이 백엔드 서비스와 연결할 수 있습니다.