0Pricing
C# Academy · Lección

Algoritmos de limitación de tasa

Compare limitadores fijos, deslizantes, de tokens y de concurrencia.

Algoritmos de limitación de tasa es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

¿Por qué limitar la tasa?

La limitación de tasa establece cuántas solicitudes puede realizar un cliente durante un intervalo de tiempo. Protege la API frente al abuso, los clientes descontrolados y los picos accidentales de tráfico, y mantiene una distribución equitativa de la capacidad entre los usuarios.

// e.g. allow 100 requests per minute per API key

Limitación de tasa integrada

Desde .NET 7, ASP.NET Core incluye un middleware de limitación de tasa de primera clase en Microsoft.AspNetCore.RateLimiting, con cuatro algoritmos integrados.

// Algorithms: Fixed Window, Sliding Window,
//             Token Bucket, Concurrency

Ventana fija

El algoritmo de ventana fija permite N solicitudes por bloque de tiempo fijo. Cuando termina el bloque, el contador vuelve a cero.

Es sencillo, pero los picos en el límite entre ventanas pueden duplicar brevemente la tasa efectiva.

// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 seconds

Ventana deslizante

La ventana deslizante suaviza el problema de los límites entre ventanas dividiendo el intervalo en segmentos y desplazando hacia delante los segmentos expirados, de modo que el límite se aplica a cualquier ventana continua.

// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expires

Cubo de tokens

El cubo de tokens contiene un conjunto de tokens. Cada solicitud consume uno y los tokens se reponen a un ritmo constante. Permite picos breves de hasta el tamaño del cubo, al tiempo que mantiene un promedio a largo plazo.

// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 seconds

Limitador de concurrencia

El limitador de concurrencia funciona de otra manera: limita el número de solicitudes que se procesan al mismo tiempo, no por unidad de tiempo. Es ideal para proteger operaciones costosas.

// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejected

La cola

Cada limitador puede poner en cola las solicitudes que superan el límite en lugar de rechazarlas inmediatamente. QueueLimit establece el tamaño de la cola y QueueProcessingOrder define la prioridad, ya sea las más antiguas o las más recientes primero.

// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429

Elección de un algoritmo

Adapte el algoritmo al objetivo:

  • Ventana fija: es la opción más sencilla y suficiente para muchos casos.
  • Ventana deslizante: es más suave y evita los picos en los límites entre ventanas.
  • Cubo de tokens: permite picos controlados.
  • Concurrencia: limita la carga simultánea, no la tasa.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrency

Partición

Los límites se aplican por clave de partición —normalmente el usuario, la clave de API o la IP— para que un solo cliente ruidoso no agote la cuota de todos. Una única partición compartida limitaría todo el tráfico conjuntamente.

// Partition by user id, IP, or API key
// Each partition gets its own independent counter

Lo que ve el cliente

Una solicitud rechazada devuelve HTTP 429 Too Many Requests. Una API bien diseñada también devuelve un encabezado Retry-After que indica al cliente cuándo puede volver a intentarlo.

// HTTP/1.1 429 Too Many Requests
// Retry-After: 30

Limitación de tasa frente a throttling y cuotas

Son conceptos relacionados: la limitación de tasa restringe la frecuencia a corto plazo, las cuotas restringen los totales a más largo plazo, como por día o por mes, y el throttling ralentiza las solicitudes en lugar de rechazarlas. El middleware se centra en la limitación de tasa.

// rate limit: 100/min   quota: 10000/day

Comprobación rápida

Compruebe cuánto domina los algoritmos.

Resumen

Ha aprendido los conceptos de limitación de tasa:

  • Cuatro algoritmos: ventana fija, ventana deslizante, cubo de tokens y concurrencia.
  • El cubo de tokens permite picos; la concurrencia limita la carga simultánea.
  • Los límites se aplican por clave de partición; las colas suavizan el exceso.
  • Las solicitudes rechazadas reciben 429 con Retry-After.

Siguiente: configurar el middleware.

Preguntas frecuentes

¿La lección «Algoritmos de limitación de tasa» es gratis?

Sí — el texto completo de «Algoritmos de limitación de tasa» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Algoritmos de limitación de tasa»?

Compare limitadores fijos, deslizantes, de tokens y de concurrencia. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Algoritmos de limitación de tasa»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Algoritmos de limitación de tasa
  2. Configuración del middleware de limitación de tasa
  3. Conceptos básicos del almacenamiento en caché de salida
  4. Políticas e invalidación de caché
← Volver a C# Academy