Configurar a limitação de taxa para o AWS Blu Age Runtime - AWS Modernização do mainframe

AWS O Mainframe Modernization Service (experiência em Managed Runtime Environment) não está mais aberto a novos clientes. Para recursos semelhantes ao AWS Mainframe Modernization Service (experiência em Managed Runtime Environment), explore o AWS Mainframe Modernization Service (experiência autogerenciada). Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte Alteração na disponibilidade AWS da modernização do mainframe.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar a limitação de taxa para o AWS Blu Age Runtime

AWS O Blu Age Runtime inclui funcionalidade integrada de limitação de taxa para proteger o aplicativo Gapwalk contra solicitações excessivas e possíveis abusos. O sistema de limitação de taxa usa o algoritmo Token Bucket para fornecer capacidade de intermitência e limitação de taxa sustentada.

Visão geral da limitação de taxa

O sistema de limitação de taxa fornece os seguintes recursos:

Algoritmo de token bucket
  • Permite tráfego intermitente até a capacidade de intermitência configurada

  • Recarrega tokens a uma taxa constante com base nas solicitações por minuto

  • Oferece uma limitação suave da taxa sem bloquear picos de tráfego legítimos

Identificação do cliente
  • Identifica clientes por endereço IP com suporte a proxy

  • Suportes X-Forwarded-For e X-Real-IP cabeçalhos

  • Lida com cenários de balanceador de carga e proxy reverso

Gerenciamento automatizado da memória
  • Limpa automaticamente os intervalos de limite de taxa expirados

  • Intervalos de limpeza e prazos de expiração configuráveis

  • Evita vazamentos de memória em aplicativos de longa duração

Integração HTTP
  • Retorna HTTP 429 (muitas solicitações) quando os limites são excedidos

  • Inclui cabeçalhos de limite de taxa padrão nas respostas

  • Fornece informações sobre novas tentativas para clientes

Propriedades de configuração

Configure a limitação de taxa em seu application-main.yaml arquivo:

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)

Descrições da propriedade

habilitado

Interruptor principal para ativar ou desativar a funcionalidade de limitação de taxa. Padrão: false

requestsPerMinute

Número de solicitações permitidas por minuto para limitação sustentada da taxa. Isso representa a taxa de recarga do token. Padrão: 1000

Capacidade de explosão

Número máximo de solicitações permitidas em uma sequência antes da aplicação da limitação de taxa. Deve ser maior do que requestsPerMinute permitir picos de tráfego. Padrão: 1500

Incluir cabeçalhos

Se os cabeçalhos de limite de taxa padrão (X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset) devem ser incluídos nas respostas HTTP. Padrão: true

cleanupIntervalMinutes

Intervalo em minutos entre a limpeza automática dos intervalos de limite de taxa expirados. Ajuda a evitar vazamentos de memória. Padrão: 5

bucketExpiryHours

Tempo em horas após o qual os intervalos de limite de tarifa não utilizados são considerados expirados e elegíveis para limpeza. Padrão: 1

errorMessage

Mensagem de erro personalizada retornada na resposta JSON quando o limite de taxa é excedido. Padrão: "Too many requests. Try again later."

Dicas de White List

Lista separada por vírgula de endereços IP que ignoram totalmente a limitação de taxa. Útil para verificações de saúde ou sistemas confiáveis. Padrão: empty

perEndpointLimiting

Se deve aplicar limites de taxa separados por endpoint em vez de apenas por cliente. Atualmente não implementado. Padrão: false

Ativar limitação de taxa

Para ativar a limitação de taxa com as configurações padrão:

gapwalk: ratelimiting: enabled: true

Identificação do cliente

O sistema de limitação de taxa identifica clientes usando a seguinte ordem de prioridade:

  1. X-Forwarded-For cabeçalho (primeiro IP se separado por vírgula)

  2. X-Real-IP cabeçalho

  3. Endereço remoto da solicitação HTTP

Isso garante a identificação adequada do cliente quando o aplicativo está atrasado:

  • Balanceadores de cargas

  • Proxies reversos

  • CDNs

  • Gateways de API

Exemplo de identificação do 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

Cabeçalhos de limite de taxa

Quando includeHeaders ativado, os seguintes cabeçalhos são adicionados às respostas HTTP:

X- RateLimit -Limite

O limite máximo de tarifa para o cliente (solicitações por minuto)

X- RateLimit -Restante

O número de solicitações restantes na janela de limite de taxa atual

X- RateLimit -Reiniciar

A hora em que a janela de limite de taxa é redefinida (timestamp Unix)

Exemplos de cabeçalhos de resposta

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

Limite de taxa de resposta excedido

Quando o limite de taxa é excedido, o sistema retorna:

Status HTTP

429, muitas solicitações

Content-Type

application/json

Retry-After

Número de segundos de espera antes de tentar novamente

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

Gerenciamento de memória

O sistema de limitação de taxa gerencia automaticamente a memória para evitar vazamentos em aplicativos de longa execução:

Limpeza automática
  • É executado a cada cleanupIntervalMinutes minuto

  • Remove baldes não utilizados por horas bucketExpiryHours

  • Registra a atividade de limpeza para monitoramento

Eficiência de memória
  • Usa estruturas de dados simultâneas para segurança de threads

  • Criação lenta de buckets (somente quando necessário)

  • Implementação eficiente de token bucket

Monitorando a atividade de limpeza

Verifique os registros das mensagens de limpeza:

INFO RateLimitingService - Cleaned up 15 expired rate limiting buckets