Descripción de la limitación de PlayFab
PlayFab usa un algoritmo de limitación de frecuencia de ventana fija. Cada solicitud de API realizada a PlayFab se traduce en una “clave”. El valor de esta clave depende del contenido del encabezado y del cuerpo de la solicitud de API. Cada llamada API individual incrementa el recuento de su clave correspondiente. Si una clave específica realiza más solicitudes de API de las permitidas dentro de un período de tiempo establecido (el límite de frecuencia), cualquier solicitud adicional que use esa clave se limita.Cómo determina PlayFab la clave para una solicitud de API específica
Límites de frecuencia de API de todo el título
La clave es el identificador del título.Límites de frecuencia de API de todo el espacio de nombres
La clave es el identificador del espacio de nombres.Límites de frecuencia de API por entidad
- Para las API no autenticadas o anónimas (por ejemplo, las API
LoginWith[Platform]), la clave es la dirección IP del cliente. - Para las API autenticadas: la clave depende del encabezado y del cuerpo de la solicitud (que es lo que se usa para determinar la entidad que realiza la llamada y la entidad de destino de una API).
- La entidad que realiza la llamada de una API es la entidad vinculada al token
X-Authorization. - La entidad de destino de una API se define en el cuerpo de la solicitud y varía según la API. Para determinar a qué entidad se dirige, revise el cuerpo de la solicitud de esa API específica. Por ejemplo, la API GetUserData admite la especificación de una entidad diferente mediante PlayFabId en el cuerpo de su solicitud.
- Si no se especifica ninguna entidad de destino en el cuerpo de la API, la clave es el identificador de la entidad que realiza la llamada.
- Si se especifica una entidad de destino en el cuerpo de la API:
- Si la entidad que realiza la llamada es de tipo MasterPlayerAccount, TitlePlayerAccount o Character (por ejemplo, la API se autenticó con un token
X-Authorizationasociado a uno de esos tipos de entidad), la clave es el identificador de la entidad que realiza la llamada. - Si la entidad que realiza la llamada NO es de uno de los tipos de entidad anteriores, la clave pasa a ser el identificador de la entidad de destino.
- Si la entidad que realiza la llamada es de tipo MasterPlayerAccount, TitlePlayerAccount o Character (por ejemplo, la API se autenticó con un token
- La entidad que realiza la llamada de una API es la entidad vinculada al token
- Un cliente con la dirección IP 23.192.228.80 llama a la API
Client/LoginWith[Platform]. La clave de la solicitud de API es 23.192.228.80. - Un cliente llama a
Client/LinkCustomIDy proporciona un tokenX-Authorizationque corresponde al identificador de cuenta de jugador maestra 408C36ADC841C0CD. No hay nada en el cuerpo de la solicitud de la API que mencione otro identificador de entidad. La clave de la solicitud de API es 408C36ADC841C0CD. - Un cliente llama a
Client/GetUserPublisherDatay proporciona un tokenX-Authorizationque corresponde al identificador de cuenta de jugador maestra D5491A06D715E817. En el cuerpo de la solicitud, el cliente proporciona el valor de la cuenta de jugador maestra 25254A5AC4AEBA55 (por ejemplo, el cuerpo de la solicitud contiene PlayFabId:25254A5AC4AEBA55). La clave de la solicitud de API es D5491A06D715E817 porque la entidad que realiza la llamada aquí es una cuenta de jugador maestra. - Un cliente llama a
Client/GetUserPublisherDatay proporciona un tokenX-Authorizationque corresponde al identificador de título 123. En el cuerpo de la solicitud, el cliente proporciona el valor de la cuenta de jugador maestra 25254A5AC4AEBA55 (por ejemplo, el cuerpo de la solicitud contiene PlayFabId:25254A5AC4AEBA55). La clave de la solicitud de API es 25254A5AC4AEBA55 porque la entidad que realiza la llamada aquí es un título.
Ventajas de la limitación por entidad de destino
La limitación por entidad de destino es un mecanismo que aplica límites a determinadas operaciones en función del tipo de entidad a la que se dirigen. Estos límites ayudan a mantener la estabilidad del sistema y a evitar abusos, ofreciendo a los usuarios:- Límites coherentes por jugador: escalar verticalmente el título no afecta a los límites de los jugadores individuales, lo que permite a los títulos ampliar su base de jugadores sin preocuparse por los límites de capacidad basados en el número de jugadores.
- Limitación uniforme de los jugadores: los jugadores experimentan los mismos límites de limitación independientemente de cuántos usuarios estén activos en un título, lo que permite a los desarrolladores detectar problemas de limitación de forma temprana, incluso con una base de usuarios pequeña.
- Estabilidad del servicio: la limitación evita que el tráfico de un solo jugador sature o afecte negativamente a los servicios de PlayFab o a una partición específica del plano de datos compartida entre varios títulos.
