API Yönetim Çözümleri [kapalı]


9

Şu anda bir API oluşturuyorum ve bana (GUI'de) ve hız sınırı kullanımını izlememe izin veren bir araç arıyorum. Ben de dahil olmak üzere birkaç kurumsal çözümle karşılaştım:

Apigee kurumsal planı tam olarak aradığım şey ama planlar fiyat aralığım dışında 3000 $ / ay'dan başlıyor . Diğer çözümlerin hepsi ya çok pahalıdır ya da aradığım çözümü sağlamıyor.

Bu, aşağıdakiler dahil bazı açık kaynak seçeneklerine bakmamı sağladı:

Vernik oldukça eksiksiz bir çözüm gibi görünüyor; Ancak, verileri görselleştirmek için bir GUI oluşturmak gerekir.

Son seçeneğim EventMachine ve ruby ​​kullanarak sıfırdan bir çözüm oluşturmaktı.

Herhangi bir tavsiye?


1
Mike. Api Axle'ın geliştiricisiyim. İstatistiklerin görselleştirilmesi yoktur, ancak Axle, bir tane oluşturmayı nispeten kolaylaştıracak bir API ile birlikte gelir. Yardım edebileceğimi düşünüyorsanız bana ping atın.
Phil Jackson

2
Test etmedim ama nginx'i redis ile kullanma ve bu tür bir algoritmayı uygulama hakkında chris6f.com/rate-limiting-with-redis
hellvinz

Yanıtlar:


3

Bence bunun ne kadar zor olduğunu abartıyorsun.

Kodunuzda sadece redis / memcached / mongodb (1/24 saat sayacı veya ihtiyaçlarınıza göre saatlik / günlük sayaç) içeren bir sayaç var ve limit karşılandığında uygun hatayı döndürün. Sayımları tam orada artırabilir veya günlüklerinizi işlerken eşzamansız olarak yapabilirsiniz.

Verileri göstermek için gereken sayıları özetleyen basit bir web sayfası oluşturun.

Kullanımımız için işleri tam olarak sınırlamamız gerekmiyor, bu yüzden genellikle sadece günlük altyapımızdan giriş yapıyoruz ve (gerçek zamanlı olarak scribe yoluyla) günlük işlemcilerinden biri bu tür şeyleri özetleyecektir. Çıktı, meşgul IP'ler / istemciler, nagiosların izleyebileceği bazı sayfalar ve munin'in grafik yapmak için veri çektiği bazı URL'leri içeren basit bir HTML sayfasıdır.


1

Naxsi'yi nginx ile kullanabilirsiniz . / requestDenied konumunuzu, ihtiyacınız olan sınır kurallarıyla geçersiz kılın:

naxsi yönlendirme parametrelerini karşılık gelen sınıra eşleyin:

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

konumdaki sınırları kullanın:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.