Apigee 및 Apigee Hybrid 문서입니다.
Apigee Edge 문서 보기
Apigee에서는 할당량 정책을 사용하여 특정 기간 동안 API 프록시에 허용되는 요청 수를 구성할 수 있습니다.
안티패턴
API 프록시 요청은 메시지 프로세서라는 하나 이상의 분산된 Apigee 구성요소로 처리될 수 있습니다. 여러 메시지 프로세서가 API 요청을 처리하도록 구성된 경우 각 메시지 프로세서가 자신이 처리하는 요청의 '수'를 유지하기 때문에 할당량을 초과할 가능성이 높습니다.
예를 들어 설명해 보겠습니다. API 프록시에 다음과 같은 할당량 정책이 있다고 가정합니다.
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
위 구성에서는 시간당 총 100개의 요청을 허용해야 합니다.
하지만 실제로는 여러 메시지 프로세서가 API 요청을 처리할 경우 다음과 같은 결과가 발생합니다.
위 이미지에서
- 할당량 정책은 시간당 100개의 요청을 허용하도록 구성됩니다.
- API 프록시에 대한 요청은 두 개의 메시지 프로세서로 처리됩니다.
- 각 메시지 프로세서는 처리하는 요청 수를 추적하기 위해 자체 할당량 계산 변수
quota_count_mp1
및quota_count_mp2
를 유지합니다. - 따라서 각 메시지 프로세서가 100개의 API 요청을 개별적으로 허용합니다. 결국 100개의 요청이 아닌 총 200개의 요청이 처리됩니다.
영향
이러한 상황은 할당량 구성의 목적을 무산시켜 요청을 처리하는 백엔드 서버에 부정적인 영향을 미칠 수 있습니다.
백엔드 서버에 다음과 같은 결과가 발생할 수 있습니다.
- 수신 트래픽이 예상보다 커서 압박을 받음
- 최신 API 요청에 응답하지 않아 503 오류 발생
권장사항
할당량 정책에서 <Distributed>
요소를 true
로 설정하여 모든 메시지 프로세서에서 API 요청을 추적하는 데 공통 카운터를 사용하는 것이 좋습니다.
아래 코드 스니펫과 같이 <Distributed>
요소를 설정할 수 있습니다.
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>