Решения по управлению API [закрыто]

9

В настоящее время я создаю API и ищу инструмент, который позволил бы мне контролировать (в графическом интерфейсе) и ограничивать скорость использования. Я встретил несколько корпоративных решений, в том числе:

План предприятия Apigee - именно то, что я ищу, но планы начинаются с 3000 долларов в месяц, что выходит за пределы моего ценового диапазона. Все остальные решения либо слишком дороги, либо не обеспечивают решения, которое я ищу.

Это заставило меня взглянуть на некоторые варианты с открытым исходным кодом, в том числе:

Лак кажется довольно полным решением; Тем не менее, мне нужно построить графический интерфейс для визуализации данных.

Мой последний вариант - создать решение с нуля, используя EventMachine и Ruby.

Любой совет?

Майк
источник
1
Майк. Я разработчик Api Axle. Там нет визуализации статистики, но Axle поставляется с API, который должен сделать его относительно простым. Пингуй меня, если думаешь, что я могу помочь.
Фил Джексон
2
Я не проверял это, но как насчет использования nginx с Redis и реализации такого алгоритма? Chris6f.com/rate-limiting-with-redis
hellvinz

Ответы:

3

Я думаю, вы переоцениваете, насколько это сложно.

В вашем коде просто есть счетчик с redis / memcached / mongodb (счетчик 1/24 часа или часовой / дневной счетчик в зависимости от ваших потребностей) и возвращайте соответствующую ошибку, когда предел достигнут. Вы можете либо увеличить счет прямо здесь, либо сделать это асинхронно при обработке ваших журналов.

Для отображения данных просто сделайте простую веб-страницу, суммирующую количество по мере необходимости.

Для нашего использования нам не нужно точно ограничивать что-либо, поэтому мы, как правило, просто регистрируем нашу лог-инфраструктуру, и один из процессоров логов (в реальном времени через писцы) суммирует подобные вещи. В результате получается простая HTML-страница с занятыми IP-адресами / клиентами, некоторые страницы, которые nagios может отслеживать, и некоторые URL-адреса, с которых munin извлекает данные для построения графиков.

Спроси Бьёрна Хансена
источник
1

Вы можете использовать naxsi с nginx. просто переопределите ваше местоположение / requestDenied с необходимыми вам правилами ограничения:

сопоставить параметры перенаправления naxsi с соответствующим пределом:

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

используйте ограничения в местоположении:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
DukeLion
источник