PlayFab のスロットリングについて理解する
PlayFab は固定ウィンドウ レート制限アルゴリズムを使用しています。 PlayFab に対して行われる各 API リクエストは「キー」に変換されます。このキーの値は、API リクエスト ヘッダーと API リクエスト ボディの内容に依存します。個々の API 呼び出しは、それに対応するキーのカウントを増加させます。 特定のキーが設定された期間 (レート制限) 内に許可されているよりも多くの API リクエストを行った場合、そのキーを使用したそれ以降のリクエストはスロットリングされます。PlayFab が特定の API リクエストのキーを決定する方法
タイトル全体の API レート制限
キー はタイトル ID です。名前空間全体の API レート制限
キー は名前空間 ID です。エンティティ単位の API レート制限
- 認証されない/匿名の API (例:
LoginWith[Platform]API) の場合、キー はクライアントの IP アドレスです。 - 認証済み API の場合: キーはリクエスト ヘッダーとリクエスト ボディに依存します (これらは API の呼び出し元エンティティとターゲット エンティティの決定に使用されます)。
- API の呼び出し元エンティティは、
X-Authorizationトークンに紐付いたエンティティです。 - API のターゲット エンティティはリクエスト ボディで定義され、API ごとに異なります。どのエンティティが対象になっているかを判断するには、特定の API のリクエスト ボディを確認します。たとえば、GetUserData API はリクエスト ボディで PlayFabId を使用して別のエンティティを指定することをサポートしています。
- API のボディにターゲット エンティティが指定されていない場合、キー は呼び出し元エンティティのエンティティ ID です。
- API のボディにターゲット エンティティが指定されている場合:
- 呼び出し元エンティティが MasterPlayerAccount、TitlePlayerAccount、Character エンティティ タイプのいずれかである (例: API がそれらのエンティティ タイプに関連付けられた
X-Authorizationトークンで認証された) 場合、キー は呼び出し元エンティティの ID です。 - 呼び出し元エンティティが上記のエンティティ タイプのいずれでもない場合、キー はターゲット エンティティの ID になります。
- 呼び出し元エンティティが MasterPlayerAccount、TitlePlayerAccount、Character エンティティ タイプのいずれかである (例: API がそれらのエンティティ タイプに関連付けられた
- API の呼び出し元エンティティは、
- IP アドレス 23.192.228.80 のクライアントが
Client/LoginWith[Platform]API を呼び出します。API リクエストのキーは 23.192.228.80 です。 - クライアントが
Client/LinkCustomIDを呼び出し、マスター プレイヤー アカウント ID 408C36ADC841C0CD に対応するX-Authorizationトークンを提供します。API のリクエスト ボディには他のエンティティ ID に関する記述はありません。API リクエストのキーは 408C36ADC841C0CD です。 - クライアントが
Client/GetUserPublisherDataを呼び出し、マスター プレイヤー アカウント ID D5491A06D715E817 に対応するX-Authorizationトークンを提供します。リクエスト ボディでクライアントはマスター プレイヤー アカウント 25254A5AC4AEBA55 の値を指定します (例: リクエスト ボディに PlayFabId:25254A5AC4AEBA55 がある)。ここでの呼び出し元エンティティはマスター プレイヤー アカウントであるため、API リクエストのキーは D5491A06D715E817 です。 - クライアントが
Client/GetUserPublisherDataを呼び出し、タイトル ID 123 に対応するX-Authorizationトークンを提供します。リクエスト ボディでクライアントはマスター プレイヤー アカウント 25254A5AC4AEBA55 の値を指定します (例: リクエスト ボディに PlayFabId:25254A5AC4AEBA55 がある)。ここでの呼び出し元エンティティはタイトルであるため、API リクエストのキーは 25254A5AC4AEBA55 です。
ターゲット エンティティ スロットリングの利点
ターゲット エンティティ スロットリングは、対象となるエンティティの種類に基づいて特定の操作に制限を適用する仕組みです。これらの制限はシステムの安定性を維持し、乱用を防止するのに役立ち、ユーザーには次のようなメリットがあります:- プレイヤー単位の一貫した制限: タイトルをスケールアップしても個々のプレイヤーの制限には影響しません。プレイヤー数に基づく容量制限を心配することなく、タイトルはプレイヤー ベースをスケール アウトできます。
- 均一なプレイヤー スロットリング: タイトル上でアクティブなユーザー数に関係なく、プレイヤーは同じスロットリング制限を体験します。これにより、開発者は小規模なユーザー ベースであってもスロットリングの問題を早期に検出できます。
- サービスの安定性: スロットリングにより、1 人のプレイヤーのトラフィックが PlayFab のサービスや複数のタイトルで共有される特定のデータ プレーン パーティションを圧倒したり、悪影響を及ぼしたりするのを防ぎます。
