O que é a limitação de API?

A limitação de API é o processo de limitar o número de solicitações de API que um usuário pode fazer em um determinado período. Uma interface de programação de aplicativos (API) funciona como um gateway entre um usuário e um aplicativo de software. Por exemplo, quando um usuário clica no botão de postagem nas mídias sociais, o clique no botão aciona uma chamada de API. Essa API interage com o servidor web do aplicativo de mídia social e realiza a ação de postagem. Esse usuário pode ser um humano ou outro aplicativo de software.

Diagrama de limitação de API

As organizações usam a limitação de API com vários objetivos, como segurança, escalabilidade, desempenho, monetização, autenticação e disponibilidade.

Um exemplo real de limitação de API nos negócios

Suponha que uma pessoa esteja procurando um voo no site de uma agência de viagens online. O site da agência coleta informações do usuário, incluindo origem, destino e data da viagem. Em seguida, ele usa APIs para buscar as informações de voo do GDS (sistema de distribuição global), como Sabre ou Amadeus.

Por que as empresas precisam da limitação de API?

As APIs são um dos maiores ativos das organizações. As APIs ajudam os usuários de um site ou aplicativos móveis a cumprir suas tarefas. À medida que o número de usuários aumenta, os sites ou o aplicativo móvel começam a mostrar sinais de degradação de desempenho. Como resultado, usuários com melhores conexões ou interfaces mais rápidas podem ter uma experiência melhor do que outros. A limitação de API é uma solução elegante que ajuda as organizações a garantir o uso justo de suas APIs.

A limitação de API também ajuda a combater ataques de negação de serviço (DoS), em que um usuário mal-intencionado envia enormes volumes de solicitações para derrubar um site ou um aplicativo móvel. À medida que o número de usuários online aumenta, as empresas precisam implementar mecanismos de limitação de API para garantir o uso justo e a segurança dos dados, além de evitar ataques maliciosos.

Como funciona a limitação de API?

Embora existam vários algoritmos para limitação de API, aqui estão as etapas básicas em qualquer algoritmo de limitação de API:

  1. Um cliente/usuário chama uma API que faz interface com um serviço ou aplicativo da web.
  2. A lógica de limitação de API verifica se a solicitação atual excede o número permitido de chamadas de API.
  3. Se a solicitação estiver dentro dos limites, a API funciona normalmente e conclui a tarefa do usuário.
  4. Se a solicitação exceder o limite, a API retornará uma resposta de erro ao usuário.
  5. O usuário terá que esperar por um período de tempo pré-acordado ou pagar para fazer mais chamadas de API.
Guia de sucesso para limitação de API
O guia de sucesso definitivo para o gerente de produto de API
Aproveite o poder das APIs com um guia de sucesso de 7 partes sobre como as empresas podem criar programas de API para expandir seus negócios digitais!

Quais são os principais algoritmos de limitação de API?

Algoritmo de limitação de API de leaky bucket

Esse algoritmo usa uma fila FIFO (first-in, first-out) para manter as solicitações recebidas. A fila terá um tamanho específico. Quando uma nova chamada/solicitação de API é recebida, ela é adicionada ao final da fila. Em intervalos regulares, esse algoritmo remove uma solicitação da frente da fila e a processa. Se uma nova solicitação chegar quando a fila já estiver cheia, a solicitação será descartada. Esse algoritmo está intimamente relacionado ao algoritmo de token bucket.

Vantagens do leaky bucket

  • Fácil de implementar
  • Processa solicitações a uma taxa constante. Mesmo que haja uma explosão de solicitações, o sistema não está sobrecarregado. De certa forma, o algoritmo de leaky bucket otimiza o fluxo de saída quando há um fluxo de entrada agitado.

Desvantagens do leaky bucket

  • Como o algoritmo de leaky bucket usa uma fila FIFO, há uma chance de inanição. Isso significa que quando uma fila está cheia e quando uma solicitação leva mais tempo para ser processada, as solicitações mais recentes podem ser descartadas. Esse problema surge devido à ordem em que as solicitações são processadas.

Algoritmo de limitação de API de janela fixa

A janela fixa permite N número de chamadas de API de um usuário em um determinado período. Por exemplo, um algoritmo de janela fixa permite duas solicitações por minuto. O período de tempo é dividido em quadros fixos, cada um com duração de um minuto. No início de um minuto, um contador é definido como zero. A cada solicitação do usuário, o contador aumenta. Se o contador atingir o limite superior antes do término da janela de tempo, novas solicitações serão rejeitadas. No início de cada minuto, o contador volta a zero.

Em uma implementação típica de um algoritmo de janela fixa, cada usuário terá uma chave única e um contador associado à chave. No início da janela de tempo fixa, o contador é zerado.

Vantagem da janela fixa

  • Ao contrário do algoritmo de leaky bucket, um algoritmo de janela fixa não levará à inanição de novas solicitações, pois o contador é redefinido no início de cada janela de tempo.

Desvantagem da janela fixa

  • No início da janela de tempo, pode haver uma explosão nas solicitações do usuário. Por exemplo, se houver um limite de 1000 solicitações/hora, todas as 1000 solicitações poderão ser feitas no primeiro minuto da janela. Isso pode sobrecarregar o sistema.

Algoritmo de limitação da API de janela deslizante

Esse algoritmo resolve os problemas de estouro de solicitação com o algoritmo de janela fixa iniciando a janela de tempo quando uma solicitação é feita. Por exemplo, supõe-se que o sistema permita apenas duas solicitações por minuto para o usuário. Ao contrário da janela fixa, a janela de tempo começa apenas quando um usuário realmente faz a primeira solicitação. O registro de data e hora da primeira solicitação é salvo com um contador e o usuário pode fazer mais uma solicitação nesse minuto.

Vantagens do algoritmo de janela deslizante

O algoritmo de janela deslizante combina as vantagens do algoritmo de leaky bucket e de janela fixa. Ele elimina os problemas com os outros algoritmos. Na janela deslizante, as solicitações mais recentes não são ignoradas. Ao contrário da janela fixa, a explosão de solicitações não sobrecarrega o sistema.

Quais são os benefícios da limitação de API?

A limitação de API é uma técnica essencial para todas as organizações que expõem seus serviços por meio de APIs.

Desempenho

A limitação da API evita a degradação do desempenho do sistema, limitando o uso excessivo de uma API. Se um aplicativo tiver milhões de usuários, um sistema poderá receber um grande número de solicitações de API por segundo. O atendimento de todas essas solicitações de API desacelerará o sistema e afetará seu desempenho. A limitação de API garante que cada usuário receba o desempenho garantido no contrato de nível de serviço (SLA).

Segurança

Um sistema de limitação de API atua como um gateway para uma API. Ele ajuda a evitar ataques de negação de serviço (DoS). No DoS, um invasor emite um grande número de solicitações de serviço para que o serviço fique indisponível para os usuários legítimos. Ao limitar o número total de solicitações de serviço, a limitação da API ajuda a evitar ataques DoS.

Reduzir o uso não intencional/malicioso

Caso uma API forneça informações confidenciais devido a uma falha técnica, a limitação de APO dificultará aos usuários obter acesso não autorizado aos dados por meio da API comprometida.

Medição e monetização

As APIs são um dos maiores ativos das organizações. A monetização do uso da API contribui com uma parcela significativa do lucro. A limitação de API ajuda as organizações a medir o uso de suas APIs. Por exemplo, um serviço da web pode oferecer 1000 chamadas de API gratuitas por hora, mas se os usuários precisarem de mais solicitações por hora, eles terão que pagar por isso.

Autenticação

A limitação da API não limita necessariamente apenas o número de chamadas. Dependendo do privilégio de acesso de um usuário, a lógica de limitação da API permitirá que eles acessem as partes selecionadas da API. Por exemplo, com base na autoridade do solicitante, alguns usuários podem procurar outros usuários e outros podem editar detalhes de usuários por meio da API.

Avaliação gratuita de limitação de API
Experimente o TIBCO Cloud Integration - Teste Grátis
Deixe o TIBCO Cloud Integration capacitar seus negócios com uma integração mais fácil e rápida baseada em API. É integração - simplificada.

Quais são os desafios da limitação de API?

Implementar a limitação de API em um sistema distribuído é uma tarefa desafiadora. Quando o aplicativo ou serviço tem vários servidores em todo o mundo, a limitação deve ser aplicada ao sistema distribuído. As solicitações consecutivas do mesmo usuário podem ser encaminhadas para servidores diferentes. A lógica de limitação da API reside em cada nó e precisa sincronizar todos eles em tempo real. Isso pode levar a inconsistência e condições de disputa.

No exemplo abaixo, o usuário já usou quatro solicitações do limite de cinco solicitações por segundo. Suponha que o usuário emita mais duas solicitações no mesmo segundo. Elas vão para dois servidores diferentes. O limitador de taxa recupera o contador atual do banco de dados e vê a contagem=4; assim, permite a chamada. Ao mesmo tempo, o segundo limitador de taxa também extrai os dados do banco de dados e vê a contagem=4. Isso acontece porque o segundo limitador de taxa extrai os dados de um banco de dados comum antes que o primeiro limitador de taxa atualize a contagem. Assim, ambas as solicitações são atendidas e o usuário recebe 6 solicitações/segundo.

Soluções: os sistemas de limitação de API empregam várias soluções para inconsistência e condições de disputa. Uma maneira de implementar a limitação de API em sistemas distribuídos é usar sessões fixas. Nesse método, todas as solicitações de um usuário são sempre atendidas por um determinado servidor. No entanto, esta solução não é bem equilibrada ou tolerante a falhas.

A segunda solução para limitação de API em sistemas distribuídos são os bloqueios. No exemplo acima, quando o limitador de primeira taxa acessa o banco de dados, ele bloqueia a contagem. Até desbloquear a contagem, o limitador de segunda taxa não poderá acessar a contagem. O limitador de primeira taxa desbloqueia a contagem quando o contador é atualizado para cinco. Outra solução popular é relaxar o limite de taxa. Esta solução permite uma certa porcentagem de solicitações extras por segundo.