Rate Limiting
レートリミットは、リクエストレートをしきい値以下に制限してシステムを過負荷から守る仕組みである。固定ウィンドウ、スライディングウィンドウ、トークンバケット、リーキーバケットなどのアルゴリズムがある。
目的
システムを過負荷や悪用から守り、リソースを公平に配分する。
メカニズム
トークンバケットは固定レートでトークンを補充し、リクエストがトークンを消費するためバーストを許容する。リーキーバケットは固定レートでリクエストを流出させ、バーストをならす。スライディングウィンドウはウィンドウ内のリクエストを正確に数える。Redis+Luaでアトミックな制限を実現する。
ユースケース
- APIの保護
- 悪用(アビューズ)の防止
- トラフィック制御