TokenBucket

Fixed Window, Sliding Window Log, Sliding Window Counter 방식의 처리율 제한 알고리즘을 구현해보았습니다.이번에는 토큰 버킷(Token Bucket) 방식을 실제 구현 코드와 함께 정리해보겠습니다.Token Bucket Rate Limiter는 뭘까?토큰 버킷은 일정한 속도로 토큰을 버킷에 충전하고, 각 요청마다 토큰을 소모하는 방식입니다.버킷이 가득 찰 때까지 토큰이 축적되므로 일시적인 과도한 트래픽을 허용하면서, 장기적인 평균 처리율을 보장하는 특징이 있습니다.17:00 [5개] -> 3개 요청 -> [2개] 남음17:01 [2개] -> 1개 충전 -> [3개] -> 2개 요청 -> [1개]17:02 [1개] -> 1개 충전 -> [2개] -> 5개 요청 -..
지난 글에 Rate Limiter 성능 문제를 해결하기 위해 Caffeine 캐시를 도입했습니다.처리율 제한 시스템을 설계했을 때 어떤 알고리즘이 있으며, 어떤 이유로 선택했는지 정리하려고 합니다. 1. 왜 Rate Limiter를 직접 구현하게 되었는지?평소에 하던 업무에서 다음과 같은 부분을 중점으로 설계하고 구현한 적이 없어서 따로 고민해보지는 않았었습니다.다만, 사이드 프로젝트에서 슬랙 알림 연동을 마치고 예외나 배치 스케줄러가 종료했을 때 알림이 중복으로 발송되는 것에 대해 생각을 해보았습니다. 그래서 ConcurrentHashMap 형식으로 알림 발송 현황을 저장하는 방식을 선택해보았습니다. 처음 구현 코드에서는"고정윈도우 + 슬라이딩 요소"를 담았습니다. 고정 윈도우적 특성각 키별로 첫 ..
솜사탕코튼
'TokenBucket' 태그의 글 목록