Nejrychlejší způsob, jak sledovat přístup k rozhraní API

hlasů
0

Jsem vytvoření API pro mého Rails aplikace, a já chci sledovat, kolikrát uživatel volá konkrétní metodu API, a víčko je říkat v podobné 1000 žádostí za den. Čekám velmi vysoké objemy požadavek na více uživatelů.

Máte nějaký návrh o tom, jak mohu sledovat něco takového na uživatele? Chci se vyhnout nutnosti zapisovat do databáze opakovaně a zabývat se zámky.

Jsem v pořádku dělá zpožděný zápis (mez API nemusí být super přesný) je, ale existuje standardní způsob, jak toho dosáhnout?

Položena 27/08/2009 v 00:16
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
0

Pokud jste v pořádku s hostované řešení, podívejte se na mé společnosti, WebServius ( http://www.webservius.com ), který dělá řízení API (vydávání klíčů, prosazování kvót, atd.) Máme také fakturační podporu, takže si budete moci nastavit na pohotovosti cen atd

Odpovězeno 01/10/2009 v 00:53
zdroj uživatelem

hlasů
0

Zde je způsob, jak to udělat pomocí mezipaměti kolejnic

call_count_key = "api_calls_#{params[:api_key]}_#{Time.now.strftime('%Y-%m-%d-%Hh')}"
call_count = Rails.cache.read(call_count_key) || 0
call_count += 1
Rails.cache.write call_count_key, call_count

# here is our limit
raise "too many calls" if call_count > 100

To není ideální řešení, protože nezpracovává souběžnost správně, a pokud používáte do vyrovnávací paměti (výchozí kolejích), pak to bude za proces pult

Odpovězeno 27/08/2009 v 04:06
zdroj uživatelem

hlasů
0

Můžete zkusit Apigee . Vypadá to, že je to „bez omezení až do 10.000 zpráv za hodinu.“

Disclaimer: Já jsem nikdy použity Apigee.

Odpovězeno 27/08/2009 v 00:35
zdroj uživatelem

hlasů
0

To opravdu záleží na # serverů, datové sady, v # uživatelů, atd.

Jedním řešením by bylo zachovat kvóty datová struktura v paměti na serveru a aktualizuje jej za vyvolání. Máte-li více serverů byste mohli udržovat Memcache kvóty. Je zřejmé, že by bylo zapotřebí zavedení paměť na bázi nepřežije restart nebo restart, takže nějaký serializiation podporovat to.

Pokud přesnost kvóta je důležité, že je to asi nejlepší, aby to prostě udělat v DB. Dalo by se to udělat v souboru, ale pak se potýkají se stejnými problémy se snažíte, aby se zabránilo / w databáze.

EDIT: Dalo by se také provést smíšený přístup - udržovat mezipaměti paměti založené na uživatelských | API | vyvolání obrazu a pravidelně zapsat je do databáze.

Trochu více informací o požadavcích by pomohlo zpružnit možnosti ..

Odpovězeno 27/08/2009 v 00:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more