Saltar al contenido
Explorar conocimiento

concepto · intermedio · 3 min de lectura

Rate Limiting

Rate Limiting controla la cantidad de solicitudes que un cliente puede hacer en un intervalo de tiempo, protegiendo los recursos del sistema contra abuso, sobrecarga y ataques de denegación de servicio.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • rate limiting as a core architectural concept

No cubre

  • implementation details beyond conceptual understanding

Supone

  • The reader understands basic distributed systems concepts.

Resumen

Rate Limiting es la práctica de restringir cuántas operaciones puede realizar un cliente —usuario, IP, API key— en una ventana de tiempo. Si el límite es 100 requests por minuto y un cliente envía 150, las 50 adicionales se rechazan con un código HTTP 429 (Too Many Requests), se encolan para más tarde, o se degradan —se devuelve una respuesta menos costosa—.

Importa porque ningún sistema tiene recursos infinitos. Un cliente con un bug que dispara requests en un bucle infinito puede tumbar una API. Un scraper agresivo puede consumir todo el capacity de una base de datos. Rate limiting protege la estabilidad del sistema y garantiza calidad de servicio para todos los clientes, no solo para el que llegó primero.

Los algoritmos más comunes:

| Algoritmo | Comportamiento | |---|---| | Token bucket | Hay un balde con N tokens que se recargan a una tasa fija. Cada request consume un token. Permite ráfagas controladas. | | Leaky bucket | Las requests entran en una cola y se procesan a una tasa fija. El exceso se descarta. | | Fixed window | Se cuenta requests en ventanas fijas de tiempo (ej: por minuto). Simple pero permite ráfagas en bordes de ventana. | | Sliding window log | Se registra el timestamp de cada request y se cuenta cuántas hay en la ventana actual. Más preciso, más caro en memoria. |

Alcance y supuestos

Este paquete cubre el concepto a nivel arquitectónico: qué es, qué problema resuelve, cómo se relaciona con otros patrones del ecosistema, y en qué contexto tiene sentido aplicarlo. No cubre detalles de implementación específicos de cada tecnología ni configuraciones de proveedores cloud concretos. Asume que el lector entiende los fundamentos de sistemas distribuidos y arquitectura de software.

Modelo mental

El semáforo en la entrada de una autopista. Los autos pasan de a uno con un intervalo mínimo. Si hay 100 autos haciendo fila, pasan a la velocidad que el semáforo permite. Nadie puede pasar a 200 km/h aunque el motor se lo permita. Rate limiting es ese semáforo: garantiza que los recursos del sistema —la autopista— no se saturen.

Uso práctico

  • Protección anti-abuso: evitar que un solo cliente consuma todos los recursos.
  • Planes de API: limits distintos por tier (gratuito 100 req/min, pago 10 000 req/min).
  • Protección de endpoints costosos: login, búsqueda con全文检索, generación de reportes.
  • ❌ No es un firewall ni un WAF: rate limiting controla volumen, no contenido malicioso.

Ejemplo trabajado: rate limiting en una API pública

Una API de clima ofrece 100 requests/minuto para el plan gratuito y 10 000 para el plan pago. Usando token bucket con Redis, cada API key tiene un bucket que se recarga a 100 tokens/minuto. Un cliente gratuito que hace 150 requests en un minuto recibe 429 en los últimos 50. Un cliente pago no se ve afectado —su bucket tiene capacidad 100x mayor—. El rate limiting comparte estado entre instancias de la API usando Redis, asegurando que el límite se aplique globalmente.

Evidencia

  • Wikipedia, Rate limiting describe los algoritmos de rate limiting y su aplicación en redes, APIs y sistemas distribuidos.

Fuentes citadas