Rozwiązania do zarządzania interfejsami API [zamknięte]


9

Obecnie buduję interfejs API i szukam narzędzia, które pozwoliłoby mi monitorować (w graficznym interfejsie użytkownika) i używać ograniczenia prędkości. Natknąłem się na kilka rozwiązań dla przedsiębiorstw, w tym:

Plan korporacyjny Apigee jest dokładnie tym, czego szukam, ale plany zaczynają się od 3000 $ / miesiąc, co jest poza moim zakresem cenowym. Pozostałe rozwiązania są albo zbyt drogie, albo nie zapewniają rozwiązania, którego szukam.

Doprowadziło mnie to do spojrzenia na niektóre opcje open source, w tym:

Lakier wydaje się dość kompletnym rozwiązaniem; musiałbym jednak zbudować GUI do wizualizacji danych.

Ostatnią opcją byłoby zbudowanie rozwiązania od zera przy użyciu EventMachine i ruby.

Jakakolwiek rada?


1
Mikrofon. Jestem programistą Api Axle. Nie ma wizualizacji statystyk, ale Axle jest wyposażony w interfejs API, który powinien stosunkowo łatwo go zbudować. Pinguj mnie, jeśli myślisz, że mogę ci pomóc.
Phil Jackson

2
Nie testowałem go ale co użyciu nginx z REDiS i wdrażaniu tego rodzaju algorytm chris6f.com/rate-limiting-with-redis
hellvinz

Odpowiedzi:


3

Myślę, że przeceniasz, jak trudne to jest.

W swoim kodzie wystarczy mieć licznik z redis / memcached / mongodb (licznik 1/24 godziny lub licznik godzinny / dzienny w zależności od potrzeb) i zwrócić odpowiedni błąd, gdy limit zostanie osiągnięty. Możesz albo zwiększyć liczbę bezpośrednio tutaj, albo wykonać to asynchronicznie podczas przetwarzania dzienników.

Aby wyświetlić dane, wystarczy utworzyć prostą stronę internetową podsumowującą liczby w razie potrzeby.

Na nasz użytek nie musimy ograniczać rzeczy dokładnie, więc generalnie logujemy się po prostu przez naszą infrastrukturę logów, a jeden z procesorów logujących (w czasie rzeczywistym poprzez skrypt) podsumuje tego rodzaju rzeczy. Dane wyjściowe to prosta strona HTML z zajętymi adresami IP / klientami, niektóre strony, które nagios mogą monitorować, oraz niektóre adresy URL, z których pobiera dane, aby tworzyć wykresy.


1

Możesz używać naxsi z nginx. po prostu zastąp swoją / requestDenied lokalizację regułami limitów, których potrzebujesz:

odwzoruj parametry przekierowania naxsi na odpowiedni limit:

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

użyj limitów w lokalizacji:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.