APIのリクエストを制限する最良の方法は何ですか?基本的には、ユーザーを1時間に360回のAPIリクエストに制限したい(10秒ごとにリクエスト)。何頭に浮かぶことは、すべてのAPIリクエストを追跡し、保存されていますAPIのレートを制限する方法
ip-address hourly-requests
1.2.3.4 77
2.3.4.5 34
3.4.5.6 124
のIPアドレスの要求が360よりも大きい場合は、単純にしてヘッダを返す:
429 - Too Many Requests
そして、時間給要求カウンタをロールバック毎時。カウンタをインクリメントするためのすべてのAPI要求に対してMySQLクエリを作成する必要があるため、これは非常に非効率的な方法のようです。また、すべてのカウンタを1時間ごとにリセットするcronタスクが必要です。
より洗練された/効率的なソリューションはありますか?
より弾力的なアプローチの場合は、[トークンバケットアルゴリズム](https://en.wikipedia.org/wiki/Token_bucket)を参照してください。 パフォーマンスのために、カウンタは一部のメモリストアに保持する必要があります。 – botchniaque