O que é o Rate Limiter da Transloadit?
Um sistema que protege os clientes limitando a criação de Assemblies a 250 por minuto e o número de Assemblies simultâneas a 2.500, por padrão. Por padrão, cada Assembly pode passar até 8 horas fazendo upload e depois mais 8 horas em execução. As rejeições usam RATE_LIMIT_REACHED com um tempo de espera de info.retryIn em segundos. Os limites podem ser ajustados mediante solicitação.
Como o Rate Limiter funciona
Um limitador de taxa é o componente que aplica uma ou mais políticas de limitação de taxa. Ele observa o trabalho admitido sob uma chave escolhida, compara esse trabalho com cotas independentes e então aceita, adia ou rejeita novos trabalhos. Separar as cotas de envio, concorrência e duração de cada fase impede que um cliente respeite uma dimensão enquanto esgota outra. As integrações devem considerar os valores atuais do produto e o formato das rejeições na referência da API como o contrato oficial, em vez de copiá-los para o código de agendamento local.
Informações essenciais
- Uma cota de criação controla a admissão ao longo do tempo, enquanto uma cota de concorrência controla o trabalho que permanece ativo; o agendador do cliente deve considerar ambas de forma independente.
- Upload e execução são fases distintas do processamento. Um trabalho demorado em qualquer uma dessas fases pode continuar ocupando a capacidade de concorrência mesmo quando a taxa de envio recente é baixa.
- O comportamento das novas tentativas faz parte do contrato do serviço: os clientes devem reconhecer o sinal de rejeição documentado e respeitar o tempo de espera informado, em vez de tentar novamente de imediato.
Quando o Rate Limiter é importante
Mantenha a taxa de envio e a concorrência dentro dos limites documentados ou combine um ajuste antes de um pico de tráfego previsível. Trate uma rejeição como contrapressão: interrompa novos envios, aguarde o número de segundos indicado no campo info.retryIn do erro e retome gradualmente. Novas tentativas imediatas e sem controle apenas aumentam o número de tentativas sem concluir o processamento de mídia.