Spike arrest X Rate Limit

 

Introdução

Esse artigo tem como objetivo explicar um pouco sobre os interceptors de rate limit e spike arrest, bem como, expor a diferença entre eles.

Basicamente, ambos exercem controle sobre as requisições feitas no gateway. No entanto, o rate limit é responsável por monitorar a quantidade de chamadas realizadas em um determinado limite de tempo, enquanto o spike arrest é responsável por monitorar o pico de calls feitas no back-end.

Rate limit

Localizado no menu Traffic, seu principal objetivo é estabelecer a quantidade de requisições que podem ser feitas em um determinado período de tempo.

O interceptor possui alguns campos para serem configurados antes de ser inserido no flow do Plan ou da API.

Na imagem acima, podemos ver os campos em questão. No campo calls, devemos inserir a quantidade de chamadas que poderão ser realizadas em um determinado limite de tempo que será configurado no campo interval, podendo ser em segundos, minutos, horas, dias ou meses.

O campo soft limit vem, por default, desabilitado. No entanto, no momento em que o mesmo é habilitado, será obrigatório e necessário configurar uma porcentagem de chamadas que poderão exceder o limite de calls configurado anteriormente.

Também desabilitado por default, o campo Return quota header, que se marcado, permite visualizar a quantidade de chamadas restantes através de um header.

Abaixo, podemos visualizar alguns exemplos do uso do interceptor no flow da API. Note que para criação dos exemplos, o interceptor foi configurado de modo que, apenas seriam aceitas 10 chamadas por minuto.

Em um primeiro cenário, após realizar 10 calls em menos de um minuto, a 11ª chamada passa a retornar 429. Veja a imagem abaixo:

Ao verificar o trace da 11ª chamada, podemos identificar que a chamada foi barrada pelo interceptor de rate limit.

No exemplo acima, vimos que o rate limit é capaz de barrar as chamadas que excedam o limite de tempo configurado. No entanto, também se faz possível ajustar uma determinada porcentagem de chamadas que podem ultrapassar o limite configurado. Para que isso seja possível, é necessário habilitar o botão de soft limit.

Obs: seguindo o exemplo anterior,  o interceptor foi configurado de modo que, serão aceitas apenas 10 calls por minuto. Porém, o botão de sofit limit está habilitado para que esse limite possa exceder em até 30%.

Na imagem abaixo, podemos visualizar a configuração do campo soft limit:

No contexto descrito acima, será possível realizar 13 calls,nas quais, 10 são chamadas previamente permitidas pelo interceptor e as outras 3 são as chamadas que se sucederam com êxito devido ao sofit limit que está configurado para conceder 30% a mais de calls do que estava concebido de antemão.

Em um primeiro cenário, após realizar 10 Calls, a 11ª chamada é feita com sucesso. Isso se deve, por que ela está incluída na porcentagem que poderá se exceder.

O mesmo comportamento acontece com as duas próximas chamadas, pois as mesmas ainda estão dentro do limite adicional configurado pelo sofit limit. Após a taxa extra de chamadas permitida ser extrapolada, o interceptor irá passar a barrar as chamadas. Veja nas imagens abaixo, que a partir da 14ª chamada, o status de retorno é um 429.

O interceptor de rate limit ainda permite que o cliente seja informado o número de calls restantes. Para isso, basta habilitar o botão Return quota header.

Uma vez que esse campo é configurado, ao realizar as calls, será possível visualizar nos headers da chamada, a quantidade de calls restantes através do campo x-ratelimit-remaning do postman. Veja na imagem abaixo:

Spike Arrest

O interceptor de spike arrest tem como principal objetivo proteger o back-end contra picos de tráfico.

Sua configuração é bem simples. Localizado no menu traffic, o spike arrest pode ser inserido apenas no fluxo de request e tem apenas dois campos a serem configurados. Veja na imagem abaixo:

No campo limit, deverá ser inserido o número de chamadas que serão permitidas dentro de um determinado intervalo de tempo, que será configurado no campo interval, este poderá ser em segundos, minutos ou horas.

Diferentemente do interceptor de rate limit que, nesse caso, iria liberar 10 chamadas por minuto, o interceptor de spike arrest, por sua vez, irá calcular através dos dados informados o pico de chamadas que será permitida.

Basicamente, para realizar o cálculo desse pico, o interceptor fará uma divisão do intervalo pelo limite configurado. No exemplo citado acima, o pico permitido será de 1 chamada a cada 6 segundos.

Qualquer chamada que desrespeitar o pico permitido será barrada pelo interceptor. Veja nas imagens abaixo:

Observe na imagem acima, que a primeira chamada foi realizada com êxito. No entanto, 2 segundos após foi realizada uma segunda chamada, essa mesma foi barrada pelo interceptor por não considerar o pico configurado.

Conclusão

A principal diferença entre os dois interceptors está no modo como vão gerenciar as calls realizadas.

Enquanto o interceptor de rate limit tem como principal objetivo contabilizar o número de chamadas realizadas dentro de um determinado período de tempo, bloqueando qualquer call realizada que extrapole o limite o configurado, o interceptor de spike arrest, por sua vez, tem como finalidade, proteger o back-end contra picos de tráfego, distribuindo as chamadas que serão permitidas dentro de um intervalo configurado.

 

 

 

 

 

 

Tem mais dúvidas? Envie uma solicitação

Comentários

Desenvolvido por Zendesk