Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO: Všechny úrovně služby správy rozhraní API
Schopnost omezovat příchozí požadavky je klíčovou rolí služby Azure API Management. Služba API Management umožňuje poskytovatelům rozhraní API chránit svá rozhraní API před zneužitím a vytvářet hodnotu pro různé úrovně produktů rozhraní API tím, že řídí rychlost požadavků nebo celkový počet přenášených požadavků nebo dat. Tento článek popisuje, jak vytvořit a použít kvótu a omezení rychlosti.
Limity rychlosti a kvóty
Omezení četnosti a kvóty se používají k různým účelům.
Omezení rychlosti
Limity rychlosti se obvykle používají k ochraně před krátkými a intenzivními nárůsty hlasitosti. Pokud například víte, že vaše back-end služba má kritický bod v databázi, když je objem volání vysoký, můžete nastavit zásadu rate-limit-by-key, abyste zakázali vysoké objemy volání.
U back-endů jazykového modelu můžete nastavit zásadu llm-token-limit , která omezí počet tokenů zpracovaných za minutu back-endem. Tato zásada pomáhá chránit před náhlými nárůsty využití tokenů, které můžou vést ke zvýšení nákladů, vyčerpání prostředků nebo snížení výkonu.
Upozornění
Vzhledem k distribuované povaze architektury omezování není omezování rychlosti nikdy zcela přesné. Rozdíl mezi nakonfigurovaným počtem povolených požadavků a skutečným číslem se liší v závislosti na objemu a rychlosti požadavků, latenci back-endu a dalších faktorech.
Úrovně Classic versus v2
Služba API Management implementuje omezení rychlosti odlišně v závislosti na tom, jestli je vaše instance v jedné z klasických nebo v2 úrovní služby:
Klasické vrstvy používají algoritmus posuvného okna.
Úrovně V2 používají algoritmus kontejneru tokenů , který je efektivnější a odpovídá omezování rychlosti v Azure Resource Manageru.
Zatímco celkové chování omezení rychlosti je podobné napříč úrovněmi služby API Management, rozdíly v implementaci ovlivňují některé detaily týkající se využití zásad omezení rychlosti, jako jsou rate-limit-by-key a llm-token-limit.
Kvóty
Kvóty se obvykle používají k řízení četnosti volání za delší časové období. Můžou například nastavit celkový počet volání, která může konkrétní odběratel provést v daném měsíci. Pokud zpeněžujete své rozhraní API, můžete také nastavit kvóty pro úrovňová předplatná. Například předplatné úrovně Basic může každý měsíc volat maximálně 10 000 volání, ale úroveň Premium může každý měsíc volat 100 000 000 volání.
Ve službě API Management se limity rychlosti obvykle šíří rychleji napříč uzly, aby se chránily před špičkami. Naproti tomu informace o kvótách využití se používají v delším období, takže se její implementace liší.
Poznámka:
Když se základní výpočetní prostředky restartují na platformě služby, služba API Management může po dosažení kvóty dál zpracovávat žádosti po krátkou dobu.
Omezení založené na produktech
Poskytovatelé rozhraní API můžou využívat možnosti omezování rychlosti, které jsou vymezeny na konkrétní předplatné, aby použili omezení pro vývojáře, kteří se zaregistrovali k používání svého rozhraní API. Tento typ omezování ale nepomůže, například při omezení jednotlivých uživatelů API. Je možné, že jeden uživatel aplikace vývojáře využije celou kvótu a zabrání ostatním zákazníkům, aby mohli aplikaci používat. Několik zákazníků, kteří generují velký objem požadavků, může také omezit přístup na občasné uživatele.
Omezení založené na vlastních klíčích
Poznámka:
Zásady rate-limit-by-key a quota-by-key nejsou dostupné v úrovni Consumption služby Azure API Management.
Zásady omezování rychlosti podle klíče a kvóty podle klíče poskytují flexibilnější řešení pro řízení provozu. Tyto zásady umožňují definovat výrazy pro identifikaci klíčů, které se používají ke sledování využívání provozu. Tato technika je znázorněna v následujících příkladech.
Omezování rychlosti IP adres
Následující zásady omezují jednu IP adresu klienta na 10 volání každou minutu a vynucuje celkem 1 000 000 volání a 10 000 kilobajtů šířky pásma za měsíc:
<rate-limit-by-key calls="10"
renewal-period="60"
counter-key="@(context.Request.IpAddress)" />
<quota-by-key calls="1000000"
bandwidth="10000"
renewal-period="2629800"
counter-key="@(context.Request.IpAddress)" />
Pokud všichni klienti na internetu použili jedinečnou IP adresu, může to být efektivní způsob, jak omezit využití uživatelem. Je ale pravděpodobné, že několik uživatelů sdílí jednu veřejnou IP adresu, protože přistupuje k internetu přes zařízení NAT. Pro rozhraní API, která umožňují neověřený přístup, může být použití IpAddress nejlepší volbou.
Omezování identity uživatele
Pokud je koncový uživatel ověřený, můžete vygenerovat klíč omezování na základě informací, které uživatele jednoznačně identifikují:
<rate-limit-by-key calls="10"
renewal-period="60"
counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Subject)" />
Tento příklad ukazuje, jak extrahovat autorizační hlavičku, převést ji na JWT objekt a použít předmět tokenu k identifikaci uživatele. Tato hodnota se pak použije jako klíč omezování rychlosti. Pokud je identita uživatele uložená v JWT jako jeden z ostatních nároků, lze tuto hodnotu využít.
Kombinované zásady
I když zásady omezování založené na uživatelích poskytují větší kontrolu než zásady omezování na základě předplatného, je stále hodnota kombinování obou možností. U zpeněžených rozhraní API je omezení podle kódu Product Subscription Key (omezení četnosti volání podle předplatného a nastavení kvóty využití podle předplatného) skvělým způsobem, jak implementovat poplatky založené na úrovních využití. Jemnější úroveň kontroly schopnosti omezovat podle uživatele je doplňková a brání tomu, aby chování jednoho uživatele zhoršovalo zážitek jiných.
Škrcení řízené klientem
Když je klíč omezení definován prostřednictvím vyjádření politiky, poskytovatel rozhraní API zvolí, jaký má omezení rozsah. Vývojář ale může chtít řídit, jak omezuje rychlost svých zákazníků. Zprostředkovatel rozhraní API může povolit tento typ ovládacího prvku tím, že zavádí vlastní hlavičku, která klientské aplikaci vývojáře umožní komunikovat klíč s rozhraním API:
<rate-limit-by-key calls="100"
renewal-period="60"
counter-key="@(request.Headers.GetValueOrDefault("Rate-Key",""))"/>
Tato technika umožňuje klientské aplikaci vývojáře určit, jak vytvořit klíč omezování rychlosti. Vývojáři klientů můžou vytvořit vlastní úrovně sazeb přidělením sad klíčů uživatelům a obměnou používání klíče.
Úvahy pro více oblastí nebo síťových bran
Zásady omezování rychlosti, jako je rate-limit, rate-limit-by-keyazure-openai-token-limita llm-token-limit používají čítače na úrovni brány služby API Management. Proto v nasazeních služby API Management ve více oblastech má každá regionální brána samostatný čítač a limity rychlosti se vynucují zvlášť pro každou oblast. Podobně platí, že v instancích služby API Management s pracovními prostory se limity vynucují pro každou bránu pracovního prostoru samostatně.
Zásady kvót, jako jsou quota a quota-by-key, jsou globální, což znamená, že na úrovni instance služby API Management se používá jediný čítač.
Shrnutí
Api Management poskytuje omezování rychlosti a kvóty pro ochranu a přidání hodnoty do služby API. Zásady omezení, které mají vlastní pravidla rozsahu, poskytují precizní kontrolu nad těmito zásadami, aby vaši zákazníci mohli vytvářet ještě lepší aplikace. Příklady v tomto článku ukazují použití těchto zásad vytvořením klíčů omezujících rychlost s IP adresami klienta, identitou uživatele a hodnotami generovanými klientem. Můžete ale použít mnoho dalších částí zprávy, jako je uživatelský agent, fragmenty cest URL a velikost zprávy.