Implementace omezování rychlosti ve službě Azure API Management
Pomocí omezování rychlosti můžete omezit počet volání rozhraní API, které může uživatel nebo služba provádět v daném časovém rámci. Omezování rychlosti vám pomůže zajistit spravedlivé využití a zabránit jakémukoli uživateli nebo službě v monopolizaci prostředků rozhraní API. Azure API Management (APIM) poskytuje pohodlný způsob implementace omezování rychlosti pro vaše rozhraní API.
Proč Azure API Management?
Azure API Management je výkonná a všestranná cloudová služba, která organizacím pomáhá publikovat rozhraní API pro externí, partnerské a interní vývojáře. Poskytuje nástroje pro zabezpečení, správu a škálování volání rozhraní API. Jednou z jejích funkcí je řízení omezování rychlosti, což je užitečné pro zachování stavu a spolehlivosti vašich rozhraní API.
Konfigurace omezování rychlosti ve službě Azure API Management
Azure API Management používá zásady k vynucení omezování rychlosti. Tyto zásady můžete definovat v různých oborech: globální, produkt nebo specifické pro rozhraní API. Tato flexibilita umožňuje přizpůsobit omezování rychlosti podle požadavků rozhraní API a vzorů použití.
Než začnete s implementací omezování rychlosti, rozhodněte se o limitech četnosti. Vámi nastavené limity závisí na kapacitě vašeho rozhraní API a na očekávaném provozu. Běžné limity se nastavují jako počet volání za sekundu, minutu nebo hodinu. Můžete například povolit 1000 volání za minutu na uživatele.
Pokud chcete definovat omezení rychlosti pro vaše rozhraní API ve službě Azure API Management, použijte zásady rate-limit
nebo rate-limit-by-key
zásady. První nastaví limit pro všechny uživatele, zatímco druhý povoluje omezení pro identifikovaný klíč (například předplatné nebo ID uživatele).
Tady je příklad zásady, která omezuje volání na 1000 za minutu.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Když překročíte zadaný počet volání, Azure API Management odešle stavový kód 429 Příliš mnoho požadavků spolu s retry-after
hlavičkou odpovědi a zprávou, která indikuje, kdy to můžete zkusit znovu.
HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 60 seconds."
}
Zveřejnění informací o limitu rychlosti v hlavičkách odpovědi
Azure API Management ve výchozím nastavení nezpřístupňuje informace o limitu rychlosti u hlaviček odpovědí. Nekomunikování limitů rychlosti znesnadňuje aplikacím vyhnout se překročení limitu a omezování. Pokud chcete zpřístupnit informace o limitu rychlosti, rozšiřte zásadu rate-limit
remaining-calls-header-name
o vlastnosti a total-calls-header-name
vlastnosti.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Když teď voláte rozhraní API, každá odpověď obsahuje ratelimit-remaining
hlavičky a ratelimit-limit
hlavičky, které komunikují, kolik dalších volání může rozhraní API zpracovat před překročením limitu.
Shrnutí
Implementace omezování rychlosti ve službě Azure API Management pomáhá vytvářet robustní a škálovatelná rozhraní API. Pomocí omezování rychlosti můžete zajistit, aby vaše rozhraní API spolehlivě a efektivně sloužilo vašim uživatelům. Nezapomeňte, že klíčem je najít správnou rovnováhu – příliš striktní, a vy byste mohli bránit použitelnosti; příliš lenientní a riskujete zahlcení rozhraní API. Díky pečlivému plánování a průběžnému monitorování můžete tohoto vyvážení dosáhnout a udržovat prostředí rozhraní API, které je v pořádku.