Terminología de la limitación de velocidad específica
Uso equitativo
XBOX considera que cada usuario debe tener la misma experiencia de alta calidad independientemente del juego (o aplicación) que esté usando. La limitación de velocidad específica (FGRL) resuelve el siguiente escenario: El desarrollador A acaba de publicar un título que sigue todos los procedimientos recomendados de los servicios de XBOX, lo que garantiza un uso óptimo de los servicios, mientras que el desarrollador B también acaba de publicar un título, pero este tiene un error desconocido. Este error hace que el título y cada usuario saturen el servicio de presencia, lo que provoca que el servicio quede sometido a una carga elevada. El servicio se ralentiza y finalmente se detiene, lo que interrumpe la experiencia de los usuarios del desarrollador A, aunque fue el error del desarrollador B el que causó el problema. Si se hubiera implementado FGRL, el servicio habría podido dejar de recibir solicitudes del título con mal comportamiento, lo que le habría permitido servir al título del desarrollador A su parte justa de los recursos.Granularidad de título y usuario
Se eligieron el título y el usuario como clave para garantizar el uso equitativo de los recursos de XBOX. Realizar el seguimiento solo del usuario crearía un escenario en el que la experiencia del usuario estaría a merced de la integración de cada título. Por ejemplo, la mayoría de los títulos ya usan el servicio de contactos, así que, a efectos de este ejemplo, supongamos que la limitación de velocidad específica se configuró en el servicio de contactos permitiendo no más de 100 solicitudes en 5 minutos. Si un usuario jugara a un juego que realizara 100 solicitudes en 1 minuto, se superaría el límite y el usuario no podría realizar más solicitudes al servicio de contactos; imagine que en el mismo período el usuario vuelve a la pantalla de inicio y hace clic en su lista de amigos: como el usuario ya habría superado el límite, esa llamada a la lista de amigos fallaría hasta que pasara el intervalo de 5 minutos, aunque la pantalla de inicio no fuera la responsable de poner al usuario en el estado limitado. Alternativamente, limitar basándose únicamente en el título produciría un resultado igualmente injusto. Establecer un límite por título ignoraría la popularidad de los títulos, y las solicitudes se atenderían simplemente por orden de llegada hasta alcanzar el límite. El emparejamiento de usuario y título garantiza que ningún título use más recursos de los apropiados según el número de usuarios activos, al tiempo que proporciona a cada usuario una porción coherente de los recursos.
- Si la solicitud está por debajo del límite, se procesará con normalidad.
- Si se determina que la solicitud está en el límite o por encima de él, los servicios la descartarán y devolverán en su lugar una respuesta 429.
Límites de ráfaga y sostenidos
Tradicionalmente, la limitación de velocidad consiste en un límite por punto de conexión cuyo seguimiento se realiza durante un período de tiempo determinado. Este período representa la cantidad de tiempo durante la cual se realiza el seguimiento del recuento de solicitudes de una entidad. Al final del período, el recuento de la entidad se restablece a 0 para comenzar el seguimiento de nuevo. Este enfoque funciona para la mayoría de las API; sin embargo, no era lo suficientemente resistente para los juegos y aplicaciones que llaman a los servicios de XBOX. La solución anterior asume que las llamadas se realizan de forma coherente, constante y predecible. En el caso de los servicios de XBOX, según el servicio y el título solicitante, los patrones de llamada son drásticamente diferentes. Elegir un solo límite en este caso exigiría llegar a un compromiso en ambos extremos del espectro de patrones de llamada. La solución de los servicios de XBOX usa dos períodos y límites. El período más pequeño se denomina período de ráfaga, mientras que el más largo se conoce como período sostenido. El período de tiempo de ráfaga para FGRL es siempre de 15 segundos, mientras que el sostenido es siempre de 300 segundos (5 minutos). Por lo tanto, durante un período sostenido de 5 minutos, hay 20 períodos de ráfaga. Los límites de ráfaga y sostenidos se supervisan al mismo tiempo y, como tales, cuentan las solicitudes al mismo tiempo. Tanto el límite de ráfaga como el sostenido se establecen en el servicio, lo que significa que cada servicio tiene su propio recuento de ráfaga y sostenido. Para ayudarle a comprender cómo funcionan juntos estos dos límites, la tabla siguiente muestra a un usuario jugando a un título que realiza una serie de solicitudes a un servicio que ha implementado FGRL. En este caso, el límite de ráfaga es de 30 solicitudes en 15 segundos, y el límite sostenido es de 100 solicitudes en 5 minutos.
La tabla muestra que en los primeros 15 segundos el usuario supera el límite de ráfaga al realizar 35 solicitudes.
Esas 5 solicitudes adicionales se descartan y se envían 5 respuestas 429.
Esas 5 solicitudes, aunque limitadas, siguen contando para el límite sostenido.
Una vez que se supera cualquiera de los límites, no se deja pasar ninguna solicitud, como se muestra cuando ambos límites se superan en el segundo 45, y de nuevo cuando solo se realizan 4 solicitudes en el segundo 285.
Objeto de respuesta HTTP 429
Cuando el recuento asociado del usuario y el título está en el límite de ráfaga o sostenido, o por encima de él, el servicio no controlará la solicitud y devolverá en su lugar una respuesta HTTP 429. Al usar XSAPI, esto equivale a un HRESULT de 0x801901AD. El código HTTP 429 significa “demasiadas solicitudes” e irá acompañado de un encabezado que contiene un valor de “reintentar después de X segundos”. Un objeto de respuesta 429 de FGRL contiene un encabezado “retry after”, que especifica la cantidad de tiempo que las entidades que llaman deben esperar antes de volver a intentarlo. Los desarrolladores que usan XSAPI no tienen que preocuparse, ya que XSAPI respeta y controla el encabezado Retry-After. La respuesta real contendrá los siguientes campos:Límites implementados
Los siguientes servicios han implementado límites de FGRL, con la aplicación de estos límites en vigor desde mayo de 2016. Estos límites son los mismos en todos los sandboxes y títulos. Cualquier título que se haya publicado a través de XBOX Developer Platform o Partner Center y se haya lanzado antes de mayo de 2016 se considerará heredado y, por tanto, estará exento.
La tabla anterior representa la lista actual de servicios seleccionados para FGRL.
Esta lista no es definitiva, ya que se pueden agregar servicios nuevos y existentes.
Cuando se vaya a agregar un servicio, se actualizará esta tabla y se realizará un anuncio.
Los límites de la tabla pueden estar sujetos a cambios.
A medida que los servicios cambien y evolucionen, también lo harán los límites; sin embargo, se le notificará y se realizarán las exenciones heredadas necesarias.
Asignación de servicios y efectos de la limitación de velocidad en los títulos
NOTA: La asignación de API más reciente se actualiza periódicamente y se puede encontrar en Live Trace Analyzer API Mapping.
