Rate Limiting y Throttling para APIs
Langdock ofrece actualmente límites que van desde 60 000 tokens por segundo hasta otras restricciones. A primera vista parece un límite generoso, pero cuando trabajas con él, la realidad es bien distinta. Múltiples archivos, varias solicitudes, consultas rápidas, proveedores de API sin soporte para historial de conversaciones: hay muchas razones por las que puedes exceder el límite de repente. Si eres proveedor de API, necesitas mantener tu servicio en funcionamiento sin permitir que un cliente activo abrume el sistema y degrade el rendimiento para todos. ¿Qué opciones tienes?
Rate Limiting y Throttling en APIs
Rate Limiting y Throttling protegen las APIs contra sobrecarga, abuso y patrones de uso injustos limitando la cantidad de solicitudes.
Descripción compacta
Rate Limiting y Throttling son mecanismos que controlan cuántas solicitudes llegan a una API dentro de un período. Rate Limiting establece cuántas solicitudes puede enviar un cliente y rechaza el exceso, generalmente con el código de estado 429 Too Many Requests. Throttling reduce la velocidad de procesamiento para aliviar sistemas backend bajo carga elevada y asegurar tiempos de respuesta consistentes. Ambas técnicas protegen contra ataques de fuerza bruta, scraping, picos de carga accidentales y ataques de negación de servicio. Las implementaciones se basan en algoritmos como Fixed Window, Sliding Window, Token Bucket o Leaky Bucket. Las medidas de acompañamiento incluyen encabezados HTTP informativos, especificaciones de Retry-After, límites diferenciados por endpoint o usuario, y monitoreo de límites.
Componentes clave
Rate Limiting
Rate Limiting restringe cuántas solicitudes puede enviar un cliente dentro de una ventana de tiempo definida. Si el cliente excede el límite, la solicitud se rechaza. El límite puede aplicarse globalmente, por API, por endpoint, por cliente o por cuenta de usuario.
Throttling
Throttling reduce la velocidad a la que se procesan las solicitudes sin rechazarlas inmediatamente. Se utiliza cuando los sistemas backend están temporalmente sobrecargados o cuando necesitas asegurar un procesamiento uniforme. Throttling se implementa mediante colas, backoff o procesamiento ralentizado.
Fixed Window
El algoritmo Fixed Window cuenta solicitudes en ventanas de tiempo fijas, por ejemplo cada minuto u hora. Es simple de implementar, pero puede causar picos de solicitudes al final e inicio de cada ventana.
Sliding Window
El algoritmo Sliding Window considera una ventana de tiempo móvil y evita picos en los bordes de la ventana. Es más justo que Fixed Window, pero un poco más complejo de implementar.
Token Bucket
El algoritmo Token Bucket llena un contenedor con tokens a velocidad constante. Cada solicitud consume un token. Mientras haya tokens disponibles, se procesan las solicitudes. Cuando el contenedor está vacío, se rechaza o retrasa la solicitud. Token Bucket permite picos puntuales pero mantiene la tasa a largo plazo controlada.
Leaky Bucket
El algoritmo Leaky Bucket coloca las solicitudes en una cola y las procesa a velocidad constante. Suaviza picos de tráfico de manera muy efectiva y evita brotes. Es excelente para procesamiento uniforme, pero puede generar tiempos de espera.
Código de estado HTTP 429
Cuando un cliente excede el Rate Limit, el servidor responde con 429 Too Many Requests. El encabezado Retry-After indica al cliente cuándo puede reintentar la solicitud. Esto permite reintentos justos y reduce la carga.
Encabezados de límite
Encabezados informativos como X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset ayudan a los clientes a entender su uso actual y planificar solicitudes. Mejoran la experiencia del desarrollador y evitan excesos accidentales.
Límites por usuario y por endpoint
Los límites globales son simples pero frecuentemente demasiado burdos. Es mejor usar límites diferenciados por usuario autenticado, por cliente o por endpoint. Los planes gratuitos pueden tener límites más estrictos, mientras que los clientes de pago obtienen cuotas mayores.
Load Shedding
Load Shedding es una forma de Throttling en la que se descartan activamente solicitudes bajo carga extrema para mantener el sistema estable. Priorizar solicitudes importantes y prescindir de operaciones menos críticas ayuda a mantener el sistema funcionando.
Rate Limiting distribuido
En sistemas distribuidos, Rate Limiting debe funcionar de forma consistente entre múltiples instancias. Para esto se utilizan almacenes centralizados como Redis o bases de datos. Alternativamente, pueden emplearse técnicas de aproximación como Sliding Window Log en Redis.
Monitoreo y alertas
Supervisa con qué frecuencia se activan los límites, qué clientes se ven afectados y si los picos indican ataques o errores. Las alertas ante patrones inusuales permiten responder rápidamente ante abuso o problemas de capacidad.
Ejemplo práctico
Un proveedor de API limita solicitudes usando el algoritmo Token Bucket. Cada usuario autenticado dispone de 100 tokens por minuto, con un brote máximo de 20 tokens.
Solicitud:
GET /api/v1/products
Authorization: Bearer USER_TOKEN
Respuesta exitosa:
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1751300000
Respuesta cuando se excede el límite:
HTTP/1.1 429 Too Many Requests
Retry-After: 45
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1751300000
{
"type": "https://api.example.com/problems/rate-limit-exceeded",
"title": "Rate Limit excedido",
"status": 429,
"detail": "Has excedido el límite de 100 solicitudes por minuto."
}
El cliente puede usar los encabezados y el valor Retry-After para determinar cuándo enviar la siguiente solicitud.
FAQ: Rate Limiting y Throttling
1. ¿Qué es Rate Limiting?
2. ¿Qué es Throttling?
3. ¿Cuál es la diferencia entre Rate Limiting y Throttling?
4. ¿Qué es el algoritmo Token Bucket?
5. ¿Qué es el algoritmo Leaky Bucket?
6. ¿Qué es Fixed Window?
7. ¿Qué es Sliding Window?
8. ¿Qué significa HTTP 429?
9. ¿Qué es Retry-After?
10. ¿Qué es Load Shedding?
11. ¿Cómo se implementa Rate Limiting en sistemas distribuidos?
12. ¿Qué son límites por usuario?
13. ¿Qué es un burst?
14. ¿Debería Rate Limiting ser diferente por endpoint?
15. ¿Por qué es importante el monitoreo para Rate Limiting?
Continuamos en la ruta de aprendizaje de APIs
El siguiente artículo en la ruta de aprendizaje de APIs cubre API Monitoring y Observability 2026, donde aprenderás a monitorear tus APIs usando métricas, logs y Distributed Tracing.
Referencias
- https://www.rfc-editor.org/rfc/rfc6585
- https://www.rfc-editor.org/rfc/rfc9110
- https://cloud.google.com/architecture/rate-limiting-strategies-techniques
Lecturas recomendadas para desarrollo de APIs
Si quieres profundizar en Rate Limiting, diseño de APIs y seguridad, te recomendamos los siguientes libros:
Keine Bücher für Kategorie "api-development" gefunden.



