¿Qué es la API Throttling?

La API Throttling es el proceso de limitar la cantidad de solicitudes de API que un usuario puede realizar en un período determinado. Una interfaz de programación de aplicaciones (API) funciona como una puerta de enlace entre un usuario y una aplicación de software. Por ejemplo, cuando un usuario hace clic en el botón de publicación en las redes sociales, el clic del botón desencadena una llamada a la API. Esta API interactúa con el servidor web de la aplicación de redes sociales y realiza la acción de publicar. Este usuario podría ser un ser humano u otra aplicación de software.

Diagrama de API Throttling

Las organizaciones utilizan la API Throttling con varios objetivos, como seguridad, escalabilidad, rendimiento, monetización, autenticación y disponibilidad.

Un ejemplo de la vida real de la API Throttling en los negocios

Supongamos que una persona está buscando un vuelo a través de un sitio OTA (agencia de viajes en línea). El sitio web de la OTA recopila información del usuario, incluido el origen, el destino y la fecha del viaje. Luego, utiliza las API para obtener la información de vuelo del GDS (sistema de distribución global) como Sabre o Amadeus.

¿Por qué las empresas necesitan de API Throttling?

Las API son uno de los mayores activos de las organizaciones. Ayudan a los usuarios de un sitio web o aplicaciones móviles a cumplir con sus tareas. A medida que aumenta la cantidad de usuarios, los sitios web o la aplicación móvil comienzan a mostrar signos de degradación del rendimiento. Como resultado, los usuarios con mejores conexiones o interfaces más rápidas pueden obtener una mejor experiencia que otros. La API Throttling es una solución elegante que ayuda a las organizaciones a garantizar un uso justo de sus APIs.

La API Throttling también ayuda a combatir los ataques de denegación de servicio (DoS), en los que un usuario malintencionado envía enormes volúmenes de solicitudes para cerrar un sitio web o una aplicación móvil. A medida que aumenta la cantidad de usuarios en línea, las empresas deben implementar mecanismos de API Throttling para garantizar un uso justo, la seguridad de los datos y evitar ataques maliciosos.

¿Cómo funciona la API Throttling?

Si bien existen varios algoritmos, estos son los pasos básicos en cualquier algoritmo de API Throttling:

  1. Un cliente/usuario llama a una API que interactúa con un servicio o aplicación web.
  2. La lógica de limitación de la API comprueba si la solicitud actual supera el número permitido de llamadas a la API.
  3. Si la solicitud está dentro de los límites, la API funciona como de costumbre y completa la tarea del usuario.
  4. Si la solicitud supera el límite, la API devuelve una respuesta de error al usuario.
  5. El usuario tendrá que esperar un período de tiempo previamente acordado o pagar para realizar más llamadas a la API.
Guía de éxito para la API Throttling
La guía definitiva para el éxito del administrador de productos API
¡Aproveche el poder de las APIs con una guía de éxito de 7 partes sobre cómo las empresas pueden crear programas de API para lograr el crecimiento del negocio digital!

¿Cuáles son los principales algoritmos de API Throttling?

Algoritmo de la API de cubeta con goteo

Este algoritmo utiliza una cola FIFO (primero en entrar, primero en salir) para contener las solicitudes entrantes. La cola tendrá un tamaño específico. Cuando se recibe una nueva llamada/solicitud de API, se agrega al final de la cola. A intervalos regulares, este algoritmo elimina una solicitud del principio de la cola y la procesa. Si llega una nueva solicitud cuando la cola ya está llena, la solicitud se descarta. Este algoritmo está estrechamente relacionado con el algoritmo token bucket.

Ventajas de la cubeta con goteo

  • Fácil de implementar
  • Procesa las solicitudes a una velocidad constante. Incluso si hay una ráfaga de solicitudes, el sistema no está sobrecargado. En cierto modo, el algoritmo de cubeta con goteo suaviza el flujo de salida cuando existe un flujo de entrada incómodo.

Desventajas de la cubeta con goteo

  • Como el algoritmo de cubeta con goteo utiliza una cola FIFO, existe la posibilidad de inanición. Significa que cuando una cola está llena y cuando una solicitud tarda más en procesarse, las solicitudes más nuevas pueden descartarse. Este problema surge debido al orden en que se procesan las solicitudes.

Algoritmo de API Throttling de ventana fija

La ventana fija permite un número N de llamadas a la API de un usuario en un período determinado. Por ejemplo, un algoritmo de ventana fija permite dos solicitudes por minuto. El marco de tiempo se divide en marcos fijos, cada uno de un minuto de duración. Al comienzo de un minuto, un contador se pone a cero. Con cada solicitud del usuario, el contador aumenta. Si el contador alcanza el límite superior antes de que finalice la ventana de tiempo, se rechazan las nuevas solicitudes. Al principio de cada minuto, el contador se pone a cero.

En una implementación típica de un algoritmo de ventana fija, cada usuario tendrá una clave única y un contador asociado con la clave. Al comienzo de la ventana de tiempo fija, el contador se reinicia.

Ventaja de ventana fija

  • A diferencia del algoritmo de cubeta con goteo, un algoritmo de ventana fija no conducirá a la inanición de nuevas solicitudes ya que el contador se reinicia al comienzo de cada ventana de tiempo.

Desventaja de la ventana fija

  • Al comienzo de la ventana de tiempo, podría haber una ráfaga en las solicitudes de los usuarios. Por ejemplo, si hay un límite de 1000 solicitudes por hora, todas las 1000 solicitudes pueden realizarse en el primer minuto de la ventana. Esto podría abrumar al sistema.

Algoritmo de API Throttling de ventana deslizante

Este algoritmo resuelve los problemas de ráfagas de solicitudes con el algoritmo de ventana fija iniciando la ventana de tiempo cuando se realiza una solicitud. Por ejemplo, asume que el sistema solo permite dos solicitudes por minuto para el usuario. A diferencia de la ventana fija, la ventana de tiempo comienza solo cuando un usuario realmente realiza la primera solicitud. La marca de tiempo de la primera solicitud se guarda con un contador y el usuario puede realizar una solicitud más dentro de ese minuto.

Ventajas del algoritmo de ventana deslizante

El algoritmo de ventana deslizante combina las ventajas del algoritmo de cubeta con goteo y de ventana fija. Elimina los problemas con los otros dos algoritmos. En la ventana deslizante, las solicitudes más nuevas no mueren de hambre. A diferencia de la ventana fija, la ráfaga de solicitudes no abruma al sistema.

¿Cuáles son los beneficios de la API Throttling?

La API Throttling es una técnica esencial para todas las organizaciones que exponen sus servicios a través de las APIs.

Rendimiento

La API Throttling evita la degradación del rendimiento del sistema al limitar el uso excesivo de una API. Si una aplicación tiene millones de usuarios, un sistema puede recibir una gran cantidad de solicitudes de API por segundo. Dar servicio a todas esas solicitudes de API ralentizará el sistema y afectará su rendimiento. La API Throttling garantiza que cada usuario reciba el rendimiento garantizado en el acuerdo de nivel de servicio (SLA).

Seguridad

Un sistema de API Throttling actúa como puerta de enlace a una API. Ayuda a prevenir los ataques de denegación de servicio (DoS). En DoS, un atacante emite una gran cantidad de solicitudes de servicio para que el servicio no esté disponible para los usuarios legítimos. Al limitar el número total de solicitudes de servicio, la API Throttling ayuda a prevenir ataques DoS.

Reducir el uso malicioso/no intencionado

En caso de que una API brinde información confidencial debido a una falla técnica, la API throttling limitará a los usuarios que obtengan acceso no autorizado a los datos a través de la API comprometida.

Medición y monetización

Las API son uno de los mayores activos de las organizaciones. Monetizar el uso de la API contribuye con una parte significativa de sus ganancias. La API Throttling ayuda a las organizaciones a medir el uso de sus API. Por ejemplo, un servicio web puede ofrecer 1000 llamadas API gratuitas por hora, pero si los usuarios necesitan más solicitudes por hora, deben pagar por ello.

Autenticación

La API Throttling no limita necesariamente solo la cantidad de llamadas. Según el privilegio de acceso de un usuario, la lógica de API throttling les permitirá acceder a las partes seleccionadas de la API. Por ejemplo, según la autoridad del solicitante, algunos usuarios pueden buscar a otros usuarios y otros pueden editar los detalles de los usuarios a través de la API.

Prueba gratuita de API Throttling
Pruebe TIBCO Cloud Integration - Prueba gratuita
Permita que TIBCO Cloud Integration fortalezca su empresa con una integración basada en API más fácil y rápida. Es integración simplificada.

¿Cuáles son los desafíos de la API Throttling?

Implementar la API Throttling en un sistema distribuido es una tarea desafiante. Cuando la aplicación o el servicio tiene varios servidores en todo el mundo, se debe aplicar la limitación para el sistema distribuido. Las solicitudes consecutivas del mismo usuario podrían reenviarse a diferentes servidores. La lógica de API throttling reside en cada nodo y debe sincronizarse entre sí en tiempo real. Podría dar lugar a inconsistencias y condiciones de prueba.

En el siguiente ejemplo, el usuario ya ha usado cuatro solicitudes del límite de cinco solicitudes por segundo. Suponga que el usuario emite dos solicitudes más en el mismo segundo. Van a dos servidores diferentes. El limitador de tasa recupera el contador actual de la base de datos y observa el recuento = 4; permite la llamada. Al mismo tiempo, el segundo limitador de velocidad también extrae los datos de la base de datos y observa el recuento = 4. Esto ocurre porque el segundo limitador de velocidad extrae los datos de una base de datos común antes de que el primer limitador de velocidad actualice el conteo. Por lo tanto, se atienden ambas solicitudes y el usuario recibe 6 solicitudes por segundo.

Soluciones: los sistemas de aceleración API emplean múltiples soluciones para las condiciones de inconsistencia y prueba. Una forma de implementar la API Throttling en sistemas distribuidos es usar sesiones pegajosas. En este método, todas las solicitudes de un usuario siempre son atendidas por un servidor en particular. Sin embargo, esta solución no está bien equilibrada ni tolera fallos.

La segunda solución para la API Throttling en sistemas distribuidos son los bloqueos. En el ejemplo anterior, cuando el primer limitador de velocidad accede a la base de datos, bloquea el conteo. Hasta que no desbloquee el conteo, el segundo limitador de velocidad no podrá acceder al conteo. El primer limitador de velocidad desbloquea el conteo cuando el contador se actualiza a cinco. Otra solución conocida es relajar el límite de la tasa. Esta solución permite un cierto porcentaje de solicitudes extra por segundo.