Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

Golang(Go) api-rate-limiting

GOLANG, 20231 min read

왜 사용?

system 을 보호하기 위해서 디도스나 해킹등.. 디도스는 api 요청을 여러번 사용자들간의 공평성을 유지하기 위해서

  • 429 too many requests
  • 서버가 retry-after : 3600 http 헤더에 추가..

규모가 있는 프로덕션에서는 사용자가 많은 서비스는 하나의 버츄얼 머신에서 구동하는 것이 아닌 다수의 클러스터를 이용하는 경우

로드벨런서? 가 다수의 클러스타에게 api 요청을 공평하게 분배한다

클러스터 -> 레디스 스토어(사용자별로 얼마나 요청했는지 정보 보관)

https://mingrammer.com/gobyexample/rate-limiting

구현 알고리즘

fixed window

정해진 시간안에 요청을 확인 단점:한번에 동시 다발적인 요청을 동시에 처리해 서버에 과부화가 걸림

sliding winodw

정해진 시간 앞 뒤를 살펴서 근접한 시간 안에 몇가지 요청이 이루어 졌는지

leaky bucket

양동이에 요청이 꽉차면 다른 것은 할 수 없음

toeken bucket 특정한시간에 요청이 많은 서비스라면..

https://etloveguitar.tistory.com/129 https://www.mimul.com/blog/about-rate-limit-algorithm/

© 2024 by GwiyeomGo Tech Blog. All rights reserved.