Ir al contenido

Conector Rate Limiter

El conector Rate Limiter limita la velocidad a la que las cargas fluyen por un pipeline usando un algoritmo token-bucket. Admite dos estrategias: descartar el exceso de cargas o ponerlas en cola para entrega posterior.

Tipo de Conector: MeddleRateLimiter

Las cargas en exceso se descartan inmediatamente y se reportan en el canal de errores.

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 10,
"burstSize": 20,
"strategy": "drop"
}
}

Permite hasta 10 eventos por segundo, con ráfagas de hasta 20. Cuando el cubo está vacío, las cargas entrantes se descartan.

Las cargas en exceso se almacenan en una cola acotada y se vacían a la velocidad configurada.

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 5,
"burstSize": 5,
"strategy": "queue",
"queueSize": 200
}
}

Si la cola está llena, las cargas adicionales se reportan en el canal de errores como un desbordamiento.

  • maxRate (obligatorio, > 0): Rendimiento sostenido en eventos por segundo (float)
  • burstSize (obligatorio, > 0): Capacidad máxima de ráfaga del cubo de tokens
  • strategy (obligatorio): drop o queue
  • queueSize: Capacidad de la cola para la estrategia queue (por defecto 100)
  • El cubo contiene como máximo burstSize tokens y se rellena a maxRate tokens por segundo
  • Cada carga consume un token
  • Bajo drop, una carga se reenvía inmediatamente si hay un token disponible; de lo contrario se descarta
  • Bajo queue, la carga se encola y luego se reenvía en cuanto se concede el siguiente token. El desbordamiento ocurre cuando la cola está llena.
  1. Proteger APIs descendentes con límites de velocidad estrictos (ej. endpoints SaaS de terceros)
  2. Suavizar entradas en ráfaga antes de escribir en una base de datos
  3. Limitar la frecuencia de notificaciones para evitar tormentas de alertas
  4. Estrangular webhooks salientes para mantenerse bajo las cuotas del proveedor

Ejemplo: Suavizar un Flujo MQTT con Ráfagas

Sección titulada «Ejemplo: Suavizar un Flujo MQTT con Ráfagas»
{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 50,
"burstSize": 100,
"strategy": "queue",
"queueSize": 1000
}
}

Sostiene 50 eventos/seg con un margen de ráfaga de 100 eventos. Hasta 1000 eventos pueden encolarse durante picos de tráfico antes del desbordamiento.

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 1,
"burstSize": 1,
"strategy": "drop"
}
}

Como máximo se reenvía una carga por segundo; cualquier exceso se descarta silenciosamente (registrando un error).

  • Ajusta maxRate al límite documentado del consumidor descendente más lento, con margen
  • Usa drop cuando la frescura importa más que la completitud (ej. dashboards en vivo)
  • Usa queue cuando no se puede perder ninguna carga; dimensiona la cola para absorber las duraciones de ráfaga esperadas
  • Monitoriza el canal de errores — las cargas descartadas/desbordadas se reportan allí
  • Combina con On Change para eliminar primero duplicados y luego limitar la velocidad de los eventos únicos