TIL

2024.11.04 rate limiting system

Gisungcu 2024. 11. 5. 00:10

https://levelup.gitconnected.com/system-design-rate-limiting-system-with-bloom-filters-f540f19152ef

 

System Design: Rate Limiting System ⏳🚦 with Bloom Filters

Designing an Efficient Rate Limiting System with Bloom Filters, Count-Min Sketches, and Sliding Windows for Scalable Traffic Control

levelup.gitconnected.com

 

bloom filter로 rate limit를 구현했다.

일단 ip기반으로만 rate limit를 할 거면 LB로도 충분하지 않을까 싶다.

유저의 정보나 사용정지 등의 부가적인 행위를 해야겠다면 애플리케이션에서 해야겠지만, ip만 보고 막는다면 LB에서 충분히 할 수 있다.

nginx에선 rate limit를 bucket 알고리즘으로 구현되어 있는 것을 사용할 수도 있고,
haproxy stick table이라는 게 존재해서 ip나 헤더, 쿠키 정보로도 일정시간 block 할 수 있다. 

위의 기능을 각자 또 할 수 있는지는 확인이 필요하고.

 

bloom filter는 중복 검사할 때 많이 쓰는데, 닉네임 중복 등에 쓸 수 있다. 여기서는 해쉬 해서 ip가 요청이 왔었는지 체크한다.

애플리케이션에서 하다 보니, 인스턴스가 여러 개라면 사용이 불가능하다. bloom filter를 글로벌하게 사용하던가.

 

 

 

옛날에 쓴 글,

 

Rate limit에 관해

안녕하세요. 이번에는 Rate Limit에 대해 알아보겠습니다. 이번 글을 쓰게 된 계기는 일부 코드에서 bucket4j를 사용하는 코드를 보았는데 흥미로웠습니다. 이들이 사용된 위치는 서버의 자원을 많이

gisungcu.tistory.com