Configurar el límite de velocidad para AWS Blu Age Runtime - AWS Modernización de mainframe

AWS El servicio de modernización de mainframes (experiencia en entornos de ejecución gestionados) ya no está abierto a nuevos clientes. Para obtener prestaciones similares a las del Servicio de Modernización de AWS Mainframe (experiencia en entornos de ejecución gestionados), explore el Servicio de Modernización de AWS Mainframe (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de la modernización del AWS mainframe.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar el límite de velocidad para AWS Blu Age Runtime

AWS Blu Age Runtime incluye una función de limitación de velocidad integrada para proteger la aplicación Gapwalk de solicitudes excesivas y posibles abusos. El sistema de limitación de velocidad utiliza el algoritmo Token Bucket para proporcionar tanto la capacidad de ráfaga como una limitación de velocidad sostenida.

Descripción general de los límites de velocidad

El sistema de limitación de velocidad ofrece las siguientes funciones:

Algoritmo Token Bucket
  • Permite el tráfico en ráfagas hasta la capacidad de ráfaga configurada

  • Recarga los tokens a un ritmo constante en función de las solicitudes por minuto

  • Proporciona una limitación de velocidad fluida sin bloquear los picos de tráfico legítimos

Identificación del cliente
  • Identifica a los clientes por dirección IP con soporte de proxy

  • Soportes X-Forwarded-For y X-Real-IP encabezados

  • Maneja escenarios de equilibrio de carga y proxy inverso

Automatic Memory Management
  • Limpia automáticamente los intervalos de límite de velocidad vencidos

  • Intervalos de limpieza y tiempos de caducidad configurables

  • Evita las pérdidas de memoria en aplicaciones de ejecución prolongada

Integración de HTTP
  • Devuelve HTTP 429 (demasiadas solicitudes) cuando se superan los límites

  • Incluye encabezados de límite de velocidad estándar en las respuestas

  • Proporciona información útil para los clientes

Propiedades de configuración

Configura la limitación de velocidad en tu application-main.yaml archivo:

gapwalk: ratelimiting: enabled: true # Enable/disable rate limiting requestsPerMinute: 1000 # Sustained rate limit per minute burstCapacity: 1500 # Maximum burst requests allowed includeHeaders: true # Include X-RateLimit-* headers cleanupIntervalMinutes: 5 # Cleanup interval for expired buckets bucketExpiryHours: 1 # Hours after which unused buckets expire errorMessage: "Too many requests. Try again later." # Custom error message whitelistIps: "" # Comma-separated IPs to bypass limiting perEndpointLimiting: false # Apply limits per endpoint (not implemented)

Descripciones de propiedades

enabled

Interruptor maestro para activar o desactivar la funcionalidad de limitación de velocidad. Valor predeterminado: false

requestsPerMinute

Número de solicitudes permitidas por minuto para limitar la velocidad de forma sostenida. Esto representa la tasa de recarga del token. Valor predeterminado: 1000

Capacidad de ráfaga

Número máximo de solicitudes permitidas en una ráfaga antes de que se aplique el límite de velocidad. Debe ser mayor que requestsPerMinute para permitir picos de tráfico. Valor predeterminado: 1500

Incluya encabezados

Si se deben incluir encabezados de límite de velocidad estándar (X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset) en las respuestas HTTP. Valor predeterminado: true

cleanupIntervalMinutes

Intervalo en minutos entre la limpieza automática de los intervalos de límite de velocidad vencidos. Ayuda a evitar pérdidas de memoria. Valor predeterminado: 5

bucketExpiryHours

Tiempo en horas tras el cual los intervalos de límite de velocidad no utilizados se consideran vencidos y aptos para ser limpiados. Valor predeterminado: 1

errorMessage

Se devuelve un mensaje de error personalizado en la respuesta de JSON cuando se supera el límite de velocidad. Valor predeterminado: "Too many requests. Try again later."

Consejos de la lista blanca

Lista de direcciones IP separadas por comas que eluden por completo la limitación de velocidad. Útil para controles de estado o sistemas confiables. Valor predeterminado: empty

perEndpointLimiting

Si se deben aplicar límites de velocidad separados por punto final en lugar de solo por cliente. Actualmente no está implementado. Valor predeterminado: false

Habilite la limitación de velocidad

Para activar la limitación de velocidad con la configuración predeterminada:

gapwalk: ratelimiting: enabled: true

Identificación del cliente

El sistema de limitación de velocidad identifica a los clientes según el siguiente orden de prioridad:

  1. X-Forwarded-For encabezado (primera IP si está separada por comas)

  2. X-Real-IP encabezado

  3. Dirección remota de la solicitud HTTP

Esto garantiza la correcta identificación del cliente cuando la aplicación está inactiva:

  • Equilibradores de carga

  • Proxies inversos

  • CDNs

  • Puertas de enlace API

Ejemplo de identificación de cliente

# Direct connection Client IP: 192.168.1.100 # Behind load balancer with X-Forwarded-For X-Forwarded-For: 203.0.113.45, 192.168.1.100 Client IP: 203.0.113.45 (first IP used) # Behind reverse proxy with X-Real-IP X-Real-IP: 203.0.113.45 Client IP: 203.0.113.45

Cabeceras de límite de velocidad

Cuando includeHeaders está habilitada, se agregan los siguientes encabezados a las respuestas HTTP:

Límite X RateLimit

El límite máximo de tarifa para el cliente (solicitudes por minuto)

X- RateLimit -Restante

El número de solicitudes que quedan en la ventana de límite de velocidad actual

X- RateLimit -Restablecer

Hora a la que se restablece la ventana de límite de velocidad (marca de tiempo de Unix)

Ejemplos de encabezados de respuesta

X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 847 X-RateLimit-Reset: 1640995200

Se ha superado el límite de velocidad de respuesta

Cuando se supera el límite de velocidad, el sistema devuelve:

Estado HTTP

429 Demasiadas solicitudes

Contenido-Tipo

application/json

Retry-After

Número de segundos de espera antes de volver a intentarlo

{ "error": "Rate limit exceeded", "message": "Too many requests. Try again later.", "retryAfter": 60, "timestamp": 1640995140000 }

Administración de la memoria

El sistema de limitación de velocidad gestiona automáticamente la memoria para evitar fugas en aplicaciones de larga duración:

Limpieza automática
  • Se ejecuta cada minuto cleanupIntervalMinutes

  • Elimina los cubos que no se hayan utilizado durante horas bucketExpiryHours

  • Registra la actividad de limpieza para su supervisión

Eficiencia de la memoria
  • Utiliza estructuras de datos simultáneas para garantizar la seguridad de los subprocesos

  • Creación de cubos diferidos (solo cuando es necesario)

  • Implementación eficiente de un depósito de fichas

Supervisión de la actividad de limpieza

Compruebe los registros para ver los mensajes de limpieza:

INFO RateLimitingService - Cleaned up 15 expired rate limiting buckets