GH GambleHub

レート制限とクォータ

レート制限とクォータは、CPU、ネットワーク、データベース、キュー、外部APIなど、共有リソースの需要を管理するための基本的なメカニズムです。目標は公平性、SLOの予測可能性、そして爆発、虐待、そして「騒々しい隣人」からの保護です。


1)基本的な概念

Rate limit-リクエスト/操作の強度(req/s、 msg/min、 bytes/sec)を制限します。
バースト-平均レートを超える許容短期バースト。
クォータ-タイムウィンドウ(ドキュメント/日、GB/月)ごとのボリュームリミット。
並行キャップ-同時操作(同時リクエスト/ジョブ)の制限。
スコープ-スコープ:テナントごと、ユーザーごと、トークンごと、エンドポイントごと、IPごと、リージョンごと、機能ごと。


2)制限アルゴリズム

2.1トークンバケット

パラメータ:'rate' (tokens/sec)、 'burst' (bucket size)。
「クレジット」のような作品:蓄積されたトークンは短いピークを許可します。
外部APIやユーザーリクエストに適しています。

2.2漏れやすいバケツ

スムーズに一定の速度で流れを「出血」します。
敏感なバックエンドへのトラフィックをスムーズにするのに適しています。

2.3固定/スライディングウィンドウ

固定ウィンドウ:シンプルですが「、ウィンドウスイッチング」に対して脆弱です。
スライドウィンドウ:より正確ですが、計算上はより高価です。

2.4 GCRA (Generic Cell Rateアルゴリズム)

トークンバケットは仮想到着時間に相当します。
分散リミッターの正確で安定した(競合しない状態)。

2.5並行限度額

同時操作の制限。
スレッド/接続プールおよびヘッド・オブ・ライン・ブロッキングの枯渇から保護します。


3)制限を適用する場所

国境(L7/APIゲートウェイ)で:メインバリア、迅速な故障(429/503)、安価なチェック。
インサイドサービス:重い業務(輸出、レポート、変革)の追加キャップ。
外部システムへの出口で:第三者のための個々の制限(反罰)。
キュー/ワーカーで:共有プールへの公平性。


4)スコープと優先順位(マルチテナント)

Иерархия:グローバル→リージョン→テナント/プラン→ユーザー/トークン→エンドポイント/機能→IP/デバイス。
優先度対応:VIP/Enterpriseは「バースト」と重量が増えますが、全体的なSLOを壊すことはありません。
Limit composition: total tolerance='min (global、 regional、 tenant、 user、 endpoint)'。


5)ボリュームクォータ

毎日/毎月のクォータ:ドキュメント/日、GB/月、メッセージ/分。
ソフト/ハードしきい値:警告(80/90%)とハードストップ。
ロールアップ:請求にオブジェクト(テーブル、ファイル、イベント)と「出金」による会計。


6)分散リミッター

要件:低遅延、一貫性、フォールトトレランス、水平スケーリング。

ローカル+確率同期:ローカルシャードバケット+周期同期。
セントラルストア:Redis/KeyDB/Memcached-LUA/atomic ops (INCR/PEXPIRE)。
Sharding:フォームのキー'limit: {scope}: {id}: {window}'と一様分布。
クロックスキュー:クライアントではなく、リミッターサーバーに「真実」を保存します。
Idempotency: Idempotency-Keysは偽の請求を減らします。


7)反乱用および保護

パブリックエンドポイント用のPer-IP+デバイスフィンガープリント。
異常におけるProof-of-Work/CAPTCHA。
UXがより重要な場合には、完全な障害の代わりに減速(スロットリング)(検索プロンプト)。
適応限界:インシデント/高価な劣化のしきい値の動的削減。


8)クライアントの行動とプロトコル

コード:'429リクエストが多すぎる'(レート)、'403'(クォータ/プランを超えた)、'503'(保護劣化)。

ベストプラクティス:
  • 'Retry-After: '-再試行するタイミング。
'RateLimit-'ファミリ(IETF):
  • 'RateLimit-Limit: ; w='
  • 'RateLimit-Remaining: '
  • 'RateLimit-Reset: '
  • バックオフ:指数+ジッタ(完全ジッタ、等しいジッタ)。
  • Idempotency: 'Idempotency-Key'ヘッダーと安全な操作の再現性。
  • タイムアウトとキャンセル:制限を「キャプチャ」しないように、中断されたリクエストを正しく中断します。

9)観察可能性およびテスト

技術:'tenant_id'、 'plan'、 'user_id'、 'endpoint'、 'region'、 'decision' (allow/deny)、 'reason' (quota/rate/concurrency)。
メトリクス:スループット、429/403/503障害率、p95/p99リミッタ遅延、キーキャッシュヒット率、計画割り当て。
監査ログ:ブロックの原因、トップ「騒々しい」キー。
テスト:ロードプロファイル「saw/burst/plateau」、カオス-Redis/shardの失敗、クロックの非同期。


10)請求との統合

使用カウンターは境界で収集され、バッチ(N分ごと)で集計されます。
計画の概要:過剰な→過充電または一時的に計画を増やす。
相違:和解の使用法と請求書;デルタへの警告。


11)中の公平さ(キュー、労働者)

Weighted Fair Queuing/DRR:計画重量でテナントにスロットを割り当てる。
テナント単位の労働者プール:VIP/騒々しいの堅い分離。
アドミッションコントロール:クォータが使い果たされた場合の実行前の失敗;キューは膨らみません。
同時性のキャップ:同時重いジャブを制限します。


12)典型的な計画プロファイル(例)

yaml plans:
starter:
rate: 50  # req/s burst: 100 concurrency: 20 quotas:
daily_requests: 100_000 monthly_gb_egress: 50 business:
rate: 200 burst: 400 concurrency: 100 quotas:
daily_requests: 1_000_000 monthly_gb_egress: 500 enterprise:
rate: 1000 burst: 2000 concurrency: 500 quotas:
daily_requests: 10_000_000 monthly_gb_egress: 5000

13)建築リファレンス(口頭スキーム)

1.Edge/APIゲートウェイ:TLS→extract context(テナント/プラン)→check limits/quotas→place RateLimitヘッダー→log/trace。
2.ポリシーエンジン:優先順位規則(VIP)、適応しきい値。
3.リミッターストア:Redis/KeyDB(アトミックオプス、LUA)、キーシャーディング、レプリケーション。
4.サービス:重い操作のための二次限界そして帽子;idempotency;WFQ/DRRのキュー。
5.使用法/請求:しきい値による収集、集計、請求書、アラート。
6.観測性:タグ付けされたメトリック/ログ/トレイル、テナントごとのダッシュボード。


14)売り上げ前のチェックリスト

  • 制限スコープ(テナント/ユーザー/トークン/エンドポイント/IP)とその階層が定義されています。
  • 選択されたアルゴリズム(Token Bucket/GCRA)と'rate/burst'パラメータ。
  • 重いオペレーションのための同時キャップと入場管理を実装しました。
  • 'RateLimit-'と'Retry-After'ヘッダーが含まれています。クライアントはbackoff+jitterをサポートします。
  • リミッターは分散し、フォールトトレラント(シャード、複製、劣化)です。
  • Usage-collectionはidempotentです。請求とバンドル、過保持のためのアラート。
  • Observability:メトリック/トレイル/タグ付きログ、トップ「ノイズ」キー、変更。
  • テスト:バースト「、のこぎり」、storの失敗、時計のスキュー、コールドスタート。
  • 顧客ドキュメント:プランの制限、429/Retry-After例、ベストプラクティスの再試行。
  • 除外ポリシー:一時的に制限を上げる方法と時期。

15)典型的なエラー

テナントごと/エンドポイントごとのグローバル制限-「noisy neighbor」はすべてのSLOを破ります。
「バースト」の欠如:UXは短いバーストで苦しんでいます。
固定ウィンドウのみ→「ウィンドウの境界にダブルヒット」を使用します。
ジッタ→反復の嵐では、特異性やリトレイはありません。
サービス/キュー→内部の「交通渋滞」のキャップなしで、境界線でのみ制限します。
応答の制限を拒否しない('Retry-After'、 'RateLimit-')→クライアントは適応しません。
OLTPデータベースのリミッター状態のストレージ→高遅延とホットロック。


16)クイック戦略の選択

ピークを持つ公開API: Token Bucket+large 'burst'、 RateLimit-ヘッダー、CDN/エッジキャッシュ。
内部重いジャブ:同時キャップ+WFQ/DRR、入場制御。
サードパーティとの統合:別々の出口限界、バッファリング/リトレイ。
SaaSマルチテナント:リミット階層(グローバル→テナント→ユーザー→エンドポイント)、VIP優先順位付け、月間クォータ。


お知らせいたします

優れたレート制限とクォータは、プラットフォームとクライアント間のシステム契約です。リソースの正直な共有、スパイクへの耐性、予測可能なSLO、透明請求。アルゴリズム(Token/GCRA+並行キャップ)を組み合わせ、ospreysの階層を実装し、明確なヘッダーとメトリックを与え、実際のトラフィックプロファイルの下でスキームを定期的にチェックします。このようにして、プラットフォームは積極的な負荷増加でも安定した状態を維持します。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。