Comprendre la limitation dans PlayFab
PlayFab utilise un algorithme de limitation de débit à fenêtre fixe. Chaque requête d’API envoyée à PlayFab est traduite en une « clé ». La valeur de cette clé dépend du contenu de l’en-tête et du corps de la requête d’API. Chaque appel d’API individuel incrémente le compteur de la clé correspondante. Si une clé donnée effectue plus de requêtes d’API que le nombre autorisé pendant une période définie (la limite de débit), toutes les requêtes supplémentaires utilisant cette clé sont limitées.Comment PlayFab détermine la clé d’une requête d’API précise
Limites de débit d’API à l’échelle du titre
La clé est l’ID du titre.Limites de débit d’API à l’échelle de l’espace de noms
La clé est l’ID de l’espace de noms, que Game Manager et les anciennes API appellent l’ID d’éditeur (Publisher ID). Un espace de noms est la portée de l’identité des joueurs et des données partagées entre les titres, et non le studio administratif. Pour plus d’informations, consultez Concepts de PlayFab.Limites de débit d’API par entité
- Pour les API non authentifiées/anonymes (par exemple les API
LoginWith[Platform]), la clé est l’adresse IP du client. - Pour les API authentifiées, la clé dépend de l’en-tête et du corps de la requête, qui déterminent l’entité appelante et l’entité cible d’une API.
- L’entité appelante d’une API est l’entité liée au jeton
X-Authorization. - L’entité cible d’une API est définie dans le corps de la requête et varie selon l’API. Pour déterminer quelle entité est ciblée, examinez le corps de la requête de cette API précise. Par exemple, l’API GetUserData permet de spécifier une autre entité à l’aide de PlayFabId dans le corps de sa requête.
- Si aucune entité cible n’est spécifiée dans le corps de l’API, la clé est l’ID d’entité de l’entité appelante.
- Si une entité cible est spécifiée dans le corps de l’API :
- Si l’entité appelante est de type MasterPlayerAccount, TitlePlayerAccount ou Character (par exemple, l’API a été authentifiée avec un jeton
X-Authorizationassocié à l’un de ces types d’entités), la clé est l’ID de l’entité appelante. - Si l’entité appelante n’est pas de l’un des types d’entités précédents, la clé devient l’ID de l’entité cible.
- Si l’entité appelante est de type MasterPlayerAccount, TitlePlayerAccount ou Character (par exemple, l’API a été authentifiée avec un jeton
- L’entité appelante d’une API est l’entité liée au jeton
- Un client ayant l’adresse IP 23.192.228.80 appelle l’API
Client/LoginWith[Platform]. La clé de la requête d’API est 23.192.228.80. - Un client appelle
Client/LinkCustomIDet fournit un jetonX-Authorizationqui correspond à l’ID de compte joueur principal 408C36ADC841C0CD. Rien dans le corps de la requête de l’API ne mentionne un autre ID d’entité. La clé de la requête d’API est 408C36ADC841C0CD. - Un client appelle
Client/GetUserPublisherDataet fournit un jetonX-Authorizationqui correspond à l’ID de compte joueur principal D5491A06D715E817. Dans le corps de la requête, le client fournit la valeur du compte joueur principal 25254A5AC4AEBA55 (par exemple, le corps de la requête contient PlayFabId:25254A5AC4AEBA55). La clé de la requête d’API est D5491A06D715E817, car l’entité appelante est ici un compte joueur principal. - Un client appelle
Client/GetUserPublisherDataet fournit un jetonX-Authorizationqui correspond à l’ID de titre 123. Dans le corps de la requête, le client fournit la valeur du compte joueur principal 25254A5AC4AEBA55 (par exemple, le corps de la requête contient PlayFabId:25254A5AC4AEBA55). La clé de la requête d’API est 25254A5AC4AEBA55, car l’entité appelante est ici un titre.
Avantages de la limitation selon l’entité cible
La limitation selon l’entité cible est un mécanisme qui impose des limites à certaines opérations en fonction du type d’entité ciblée. Ces limites aident à maintenir la stabilité du système et à prévenir les abus, ce qui offre aux utilisateurs :- Des limites cohérentes par joueur : la mise à l’échelle du titre n’a pas d’incidence sur les limites des joueurs individuels, ce qui permet aux titres d’agrandir leur base de joueurs sans se soucier des limites de capacité liées au nombre de joueurs.
- Une limitation uniforme des joueurs : les joueurs sont soumis aux mêmes limites, quel que soit le nombre d’utilisateurs actifs sur un titre, ce qui vous permet de détecter rapidement les problèmes de limitation, même avec une petite base d’utilisateurs.
- La stabilité du service : la limitation empêche le trafic d’un seul joueur de surcharger les services PlayFab ou une partition précise du plan de données partagée entre plusieurs titres, ou d’y nuire.
Afficher les limites de débit d’API de votre titre
Vous pouvez consulter les limites de débit d’API qui s’appliquent à votre titre dans Game Manager :- Connectez-vous à Game Manager et sélectionnez votre titre.
- Sélectionnez Settings dans le menu de gauche, puis sélectionnez Limits.
- Sélectionnez l’onglet API Rate Limits.
LoginWithCustomID.
Le nom de chaque API est suivi du type de sa limite :
- (title limits) : une limite à l’échelle du titre. Tous les appels à l’API provenant de votre titre sont comptabilisés dans une seule limite.
- (namespace limits) : une limite à l’échelle de l’espace de noms. Tous les appels à l’API provenant des titres de votre espace de noms sont comptabilisés dans une seule limite.
- (per-entity limits) : une limite par entité. Chaque clé est comptabilisée dans sa propre limite.
- Pour les limites à l’échelle du titre et de l’espace de noms, elle affiche All.
- Pour les limites par entité, elle affiche le type de l’entité à laquelle la clé appartient, par exemple
titleoutitle_player_account. PlayFab vérifie les lignes de haut en bas, et Default s’applique à tout type d’entité qui n’a pas sa propre ligne.
title et une ligne Default. Si votre serveur de jeu appelle l’API avec la clé secrète de votre titre et que la requête ne cible pas une autre entité, la clé est l’ID de votre titre; la ligne title s’applique donc. Comme tous ces appels provenant de votre back-end partagent une même clé, ils peuvent atteindre la limite beaucoup plus rapidement que les appels des joueurs individuels. Si un joueur appelle l’API, la clé est l’ID du joueur; la ligne Default s’applique donc. Pour plus d’informations, consultez Comment PlayFab détermine la clé d’une requête d’API précise.
