Skip to content

처리율 제한 장치의 설계

Published: at 오전 02:26

Table of contents

Open Table of contents

처리율 제한 알고리즘

처리율 제한을 실현하는 알고리즘은 여러 가지인데, 각기 다른 장단점을 갖고 있다.

토큰 버킷 알고리즘

코튼 버킷은 지정된 용량을 갖는 컨테이너다. 이 버킷에는 사전 설정된 양의 토큰이 주기적으로 채워진다. 토큰이 꽉 찬 버킷에는 더 이상의 토큰은 추가되지 않는다. 버킷이 가득 차면 추가로 공급된 토큰은 버려진다.

각 요청은 처리될 때마다 하나의 토큰을 사용한다. 요청이 도착하면 버킷에 충분한 토큰이 있는지 검사하게 된다.

토큰 버킷 알고리즘은 2개 인자를 받는다.

장점

단점

누출 버킷 알고리즘

누출 버킷 알고리즘은 토큰 버킷 알고리즘과 비슷하지만 요청 처리율이 고정되어 있다는 점이 다르다. 누출 버킷 알고리즘은 보통 FIFO 큐로 구현한다.

그 동작 원리는 다음과 같다.

누출 버킷 알고리즘은 다음의 두 인자를 사용한다.

장점

단점

고정 윈도 카운터 알고리즘

고정 윈도 카운터 알고리즘은 다음과 같이 동작한다.

장점

단점

이동 윈도 로깅 알고리즘

이동 윈도 로깅 알고리즘은 고정 윈도 카운터 알고리즘의 경계 부근의 트래픽이 몰려드는 문제를 해결한다.

장점

단점

이동 윈도 카운터 알고리즘

이동 윈도 카운터 알고리즘은 고정 윈도 카운터 알고리즘과 이동 윈도 로깅 알고리즘을 결합한 것이다.

이 알고리즘을 구현하는 데는 두 가지 접근법이 사용될 수 있다.

처리율 제한 장치의 한도가 분당 7개 요청으로 설정되어 있을 때, 다음과 같이 계산한다.

장점

단점

처리율 한도 초과 트래픽의 처리

어떤 요청의 한도 제한에 걸리면 API는 HTTP 429 응답 (too many request)을 클라이언트에게 보낸다. 경우에 따라서는 한도 제한에 걸린 메시지를 나중에 처리하기 위해 큐에 보관할 수도 있다.

처리율 제한 장치가 사용하는 HTTP 헤더

사용자가 너무 많은 요청을 보내면 429 too many requests 오류를 X-Ratelimit-Retry-After 헤더와 함께 반환하도록 한다.


처리율 제한을 회피하는 방법. 클라이언트를 어떻게 설계하는 것이 최선인가?

references