El rate limiting es una técnica esencial para proteger servicios web de picos de tráfico y abusos por parte de un mismo cliente. Sin él, los servidores pueden saturarse, los costos en la nube dispararse y la experiencia de los usuarios legítimos degradarse. Al imponer un número máximo de solicitudes por cliente en un intervalo de tiempo, se garantiza la estabilidad del sistema y un reparto justo de recursos.
En este artículo repasamos cinco algoritmos de rate limiting muy utilizados, explicando cómo funcionan, sus ventajas y desventajas, con descripciones visuales para ayudarte a decidir cuál se adapta mejor a tu API o servicio.
Por qué importa el rate limiting
Imagina un bot enviando miles de peticiones por segundo. Podría consumir CPU y memoria hasta provocar caídas, inflar la factura de servicios cloud y degradar el rendimiento de tus usuarios. El rate limiting asigna una cuota como 100 solicitudes por minuto por usuario o IP. Cuando se supera, el servidor bloquea temporalmente las peticiones extra y responde con HTTP 429 Too Many Requests. Comunicar los límites en cabeceras como X-Rate-Limit-Remaining y X-Rate-Limit-Reset permite a los clientes aplicar estrategias de reintento y backoff inteligente.
1. Token Bucket
Cómo funciona
Imagina un cubo con capacidad máxima de tokens. Los tokens se rellenan de forma constante, por ejemplo 10 por segundo. Cada solicitud consume un token. Si hay tokens, la petición se acepta y se descuenta uno; si no, se rechaza. Visualmente, un flujo continuo repone el cubo mientras cada petición comprueba si hay tokens disponibles.
Ventajas
Sencillo de implementar y de entender. Permite ráfagas cortas hasta la capacidad del cubo, absorbiendo picos transitorios.
Desventajas
El uso de memoria crece por usuario si se aplica por identidad. No garantiza un ritmo perfectamente uniforme.
2. Leaky Bucket
Cómo funciona
Piensa en un cubo con un orificio en la base. Las solicitudes entran por arriba y se procesan a un ritmo constante a través de la fuga. Si el cubo está lleno, las peticiones adicionales se descartan. Visualmente, las solicitudes se acumulan pero salen a velocidad fija, suavizando los picos.
Ventajas
Impone un caudal estable que evita que los picos bruscos saturen el sistema. Procesamiento predecible y consistente.
Desventajas
Gestiona mal las ráfagas repentinas porque las solicitudes extra se descartan de inmediato. Implementación algo más compleja que Token Bucket.
3. Fixed Window Counter
Cómo funciona
Divide el tiempo en ventanas fijas como intervalos de 1 minuto. Cada ventana arranca con un contador a cero y cada solicitud lo incrementa. Si el contador supera el límite, se deniegan peticiones hasta que comience la siguiente ventana. Visualmente, cada ventana reinicia el contador y las peticiones se aceptan hasta llegar al umbral.
Ventajas
Muy fácil de entender e implementar. Límites claros por ventana.
Desventajas
Problemas en los bordes de ventana, pudiendo permitir el doble del ritmo previsto si coinciden ráfagas al final e inicio de ventanas contiguas.
4. Sliding Window Log
Cómo funciona
Mantiene un registro de marcas de tiempo de cada solicitud. Al llegar una nueva, elimina marcas fuera del tamaño de ventana y cuenta las restantes. Si el conteo está por debajo del límite, se acepta y se añade su marca; si no, se rechaza. Visualmente, una ventana se desliza en el tiempo depurando timestamps antiguos y calculando con precisión las solicitudes vigentes.
Ventajas
Alta precisión sin efectos de borde. Ideal para APIs de bajo volumen donde la exactitud es prioritaria.
Desventajas
Consume memoria en alto volumen por almacenar timestamps. Requiere búsquedas y limpiezas frecuentes con impacto en rendimiento.
5. Sliding Window Counter
Cómo funciona
Combina la simplicidad del contador por ventana fija con la precisión del log deslizante. Rastrea el conteo en la ventana actual y la anterior y calcula una suma ponderada según el solapamiento con la ventana deslizante. Por ejemplo, si ha transcurrido el 75 por ciento de la ventana actual, el peso es 25 por ciento de la ventana anterior más 75 por ciento de la actual. Si esa suma, junto con la nueva solicitud, supera el límite, se rechaza.
Ventajas
Más preciso que Fixed Window Counter. Más eficiente en memoria que Sliding Window Log. Suaviza los picos en los bordes de ventana.
Desventajas
Algo más complejo de implementar que el contador de ventana fija.
Cómo elegir el algoritmo adecuado
Escala del sistema: en alto tráfico suelen funcionar bien Token Bucket o Sliding Window Counter por eficiencia. Patrones de tráfico: si son muy bursty, Token Bucket absorbe picos; si necesitas un caudal constante, Leaky Bucket es preferible. Granularidad y precisión: Sliding Window Log aporta máxima exactitud con mayor coste en memoria. Complejidad: Fixed Window Counter es el más simple, mientras que Sliding Window Counter equilibra precisión y coste.
Buenas prácticas operativas
Comunica siempre los límites en cabeceras de respuesta como X-Rate-Limit-Remaining, X-Rate-Limit-Limit y X-Rate-Limit-Reset. Implementa 429 Too Many Requests con Retry-After cuando proceda. Añade métricas y alertas por tasa de rechazos, latencia y errores para calibrar límites. Considera límites por usuario, IP, token y endpoint crítico, y combina protección con WAF, cacheo y colas.
Conclusión
El rate limiting protege tus APIs y garantiza un uso justo de recursos. Conociendo fortalezas y compromisos de Token Bucket, Leaky Bucket, Fixed Window Counter, Sliding Window Log y Sliding Window Counter, podrás elegir la opción que mejor se ajuste a tu arquitectura, cargas y objetivos de negocio.
Sobre Q2BSTUDIO
En Q2BSTUDIO diseñamos y construimos aplicaciones a medida y software a medida de alto rendimiento, con prácticas de arquitectura y seguridad de nivel empresarial. Integramos rate limiting en gateways, microservicios y plataformas serverless para que tus productos escalen con control en servicios cloud aws y azure. Si buscas expertos para crear o modernizar tu plataforma, descubre nuestro enfoque de desarrollo en aplicaciones a medida y software a medida y cómo desplegamos, monitorizamos y optimizamos en la nube en servicios cloud AWS y Azure.
Además contamos con un equipo especializado en inteligencia artificial e ia para empresas, diseño de agentes IA y automatización de procesos, ciberseguridad y servicios inteligencia de negocio con power bi, para que tu organización evolucione con datos, seguridad y velocidad. Si te interesa llevar tu API al siguiente nivel con observabilidad, escalado elástico y políticas avanzadas de control de consumo, hablamos.