以下のような目的でAPIの使用回数を制限する、制限を超過した時はHTTPの場合一般に429エラーを返す処理
- STRIDEにあるようなDenial of Service(サービス拒否)からアプリケーションを保護する
- カスケード障害の可能性を制限する
- リソースの使用量を測定し従量課金に利用できる
レートリミットの実装アルゴリズムには以下のようなものがある
- 固定ウインドウ(Fixed window)
- 固定期間内の制限
- スライディングウインドウ(Sliding window)
- 直近の期間内の制限
- トークンバケット方式(Token bucket)
- 総リクエスト数(トークンのバケツ)を定義しリクエストごとにトークンが利用される。バケツは定期的に充填される
- リーキーバケット方式(Leaky bucket)
- リクエストが処理される速度は固定で、バケツから溢れ出るリクエストを漏れ(リーキー)として扱う
APIゲートウェイを利用している場合、ゲートウェイに配置するとよい