概念の概要
スロットル
スロットルは、ある一定期間におけるコンシューマーによる API の使用を制御するプロセスです。スロットルは、アプリケーションレベルおよび API レベルで定義できます。スロットル制限は、API レベルでの累積的な制限と考えられます。
API Manager の管理者およびパブリッシャーは、スロットルを使用して、日、週、月あたりの API リクエスト数を制限できます。例えば、合計 API リクエスト数を 10,000/日に制限できます。
スロットル制限を超えると、サーバーは、「リクエストが多すぎます」というメッセージ内容と共に、HTTP ステータスとして 429 メッセージをユーザーに送信します。
API Manager のスロットルには、ハードとソフトの 2 つのタイプがあります。
Hard(ハード):API リクエストの数は、スロットル制限を超えることはできなくなります。
Soft(ソフト):このタイプでは、一定の割合を超えた API リクエスト制限を設定できます。例えば、超過制限を 90%に設定した場合、超過制限を超えるとユーザーは通知を受け取ります。
レート制限
レート制限は、コンシューマーが API にアクセスできるレートを定義するプロセスです。レート制限によって、コンシューマーが API にアクセスできる速度も決まります。レート制限はリアルタイムで計算されます。
レート制限は、リソースに適用できます。例えば、エンドポイント URL「http://endpointurl/products」では、「/products」がリソースです。リソースレベルで設定または上書きできます。
API がサブスクライブされる SLA プラン用に、API リソースにレート制限を追加できます。API がレート制限を超えると、サブスクライバーの応答ヘッダーにステータス 429 メッセージを受け取ります。ステータス 429 メッセージは、レート制限を超えたことを示します。
API リソースへのレート制限の追加について詳しくは、パブリッシャードキュメントのAPI リソースへのレート制限の追加の節を参照してください。パブリッシャーは、パブリッシュ中に API に複数のプランを割り当てます。サブスクライバーは、API の使用中にいずれかのプランを選択できます。
API Manager の管理者およびパブリッシャーは、レート制限を使用して、秒、分、時間あたりの API リクエスト数を定義できます。例えば、レートを 5 リクエスト/秒に設定した場合、コンシューマーが各 API にアクセスできる速度が速くなります。
API Manager がクラスターにデプロイされている場合、レート制限はノード全体で考慮されます。1 つのノード内またはノードの組み合わせで、定義された制限を超えると、コンシューマーはエラーメッセージを受け取ります。
API Manager では、「Rolling(周期的)」と「Fixed(固定)」の 2 種類のアルゴリズムを使用してレートを制限できます。
固定期間アルゴリズムでは、期間は、時間単位の開始から時間単位の終了までと見なされます。例えば、API リクエストが行われた時間枠に関係なく、少しの間、期間は 0 ~ 60 秒と見なされます。
周期的期間アルゴリズムでは、期間は、リクエストが行われた時点のわずかな時間から時間単位の終了までと見なされます。例えば、API 呼び出しに対する 2 つのリクエストが、1 分間のうち 30 秒および 40 秒の時点で行われた場合、2 つのリクエストは、その分の 30 秒から、最大で次の分の 30 秒までと見なされます。
次の図について考えてみます。
レート制限が 2 リクエスト/秒だと仮定します。上記のスナップショットでは、1.0 秒より前に 2 つのリクエストが発生し、1.0 秒より後にもう 2 つが発生しています。
この図に固定期間アルゴリズムを適用した場合、2 つのリクエストが 1 秒以内に発生したと見なされます。周期的期間アルゴリズムを適用した場合、4 つが 1 秒以内に発生したと見なされます。
SLA 設定
API Manager のSLA 設定は、レート制限およびスロットルを通じてアクセス制御をユーザーに強制します。管理者として SLA を設定する手順については、管理者ドキュメントを参照してください。
パブリッシャーの場合、サブスクリプションプランを作成して、API にスロットル制限を割り当てることができます。特定の手順については、パブリッシャードキュメントの階層の API への追加の節を参照してください。