API Management Solutions [fechado]

9

Atualmente, estou criando uma API e estou procurando uma ferramenta que me permita monitorar (em uma GUI) e usar o limite de taxa. Eu me deparei com algumas soluções corporativas, incluindo:

O plano corporativo da Apigee é exatamente o que eu estou procurando, mas os planos começam em $ 3000 / mês, o que está fora da minha faixa de preço. As outras soluções são muito caras ou não fornecem a solução que estou procurando.

Isso me levou a ver algumas opções de código aberto, incluindo:

O verniz parece ser uma solução bastante completa; no entanto, eu precisaria construir uma GUI para visualizar os dados.

Minha opção final seria criar uma solução do zero usando o EventMachine e o Ruby.

Algum conselho?

    
por Mike 05.04.2012 / 01:54

2 respostas

3

Eu acho que você superestima o quanto isso é difícil.

No seu código, basta ter um contador com redis / memcached / mongodb (contador de 1/24 de hora ou contador de hora em hora / diário, dependendo das suas necessidades) e retornar o erro apropriado quando o limite for atingido. Você pode incrementar as contagens ali mesmo ou fazer isso de forma assíncrona ao processar seus registros.

Para mostrar os dados, basta criar uma página da web simples, resumindo as contagens conforme necessário.

Para nosso uso, não precisamos limitar as coisas exatamente, por isso, geralmente apenas registramos nossa infra-estrutura de log e um dos processadores de log (em tempo real, através de escriba) resumirá esse tipo de coisa. A saída é uma página HTML simples com os IPs / clientes ocupados, alguma página que o nagios pode monitorar e algumas URLs que recebem dados para fazer gráficos.

    
por 31.05.2012 / 12:52
1

Você pode usar naxsi com o nginx. basta substituir seu / requestDenied location com as regras de limite necessárias:

mapeie os parâmetros de redirecionamento naxsi para o limite correspondente:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

use limites na localização:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
    
por 31.05.2012 / 12:43