Momentoを使った分散型集中型レートリミッターの構築
レート制限とは何か?
レート制限とは、ネットワーク・トラフィックを制限するための戦略です。一定の時間枠内で誰かがアクションを繰り返せる回数に上限を設けます。あなたがツイッターのニュースフィードを見ていようと、ライブビデオをストリーミングしていようと、レートリミッターとやりとりしている可能性はゼロではありません。レートリミッターはあなたを監視し、あなたのトラフィックについて決定を下し、あなたがあまりに騒ぎ始めると正当にあなたを停止させます。
レートリミッターの用途は?
レート制限の必要性は、あらゆるサービスの健全性と品質を維持するという基本的な要件に由来します。これがなければ、リソースは簡単に過負荷になり、サービスの低下や完全な失敗につながります。これは、分散システム、ウェブサービス、マルチテナント・アプリケーションなど、クライアントからのリクエストの量や頻度が大きく変化するアプリケーションでは特に重要です。また、分散型サービス拒否(DDoS)攻撃など、ある種のサイバー攻撃を防御する上でも重要な要素となります。
レート制限の一般的な使用例には以下のようなものがあります:
-
API管理: さまざまなAPIを提供するプラットフォームでは、単一のユーザーやサービスが帯域幅を独占するのを防ぎ、すべてのユーザーがリソースに公平にアクセスできるようにするために、レート制限が極めて重要です。
-
Eコマースサイト ブラックフライデー・セールのようなトラフィックの多いイベントの際、レート制限を行うことでユーザーリクエストの流入を制御し、ウェブサイトのクラッシュを防ぐことができます。
-
オンラインゲームサーバー レート制限は、プレイヤーが一定時間内に実行できるアクションの数を制限することで、不正行為を緩和し、公平な競技場を確保し、ゲームの整合性を維持するのに役立ちます。
Momentoを使った分散型レートリミッターの構築
分散レートリミッターを作成し、個々のユーザーのトランザクション/分(TPM)を効果的に管理したいとします。
私たちのアプローチは、Momentoのincrement
とupdateTTL
APIを利用すします。この方法は効率的であるだけでなく、非常に正確であることが証明されています。