Sdílet prostřednictvím


Implementace omezování rychlosti v Azure API Management

Pomocí omezení 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. Omezení rychlosti pomáhá zajistit spravedlivé využití a brání jakémukoli jednomu 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é při udržování stavu a spolehlivosti rozhraní API.

Konfigurace omezování rychlosti v Azure API Management

Azure API Management používá k vynucení omezování rychlosti zásady. Tyto zásady můžete definovat v různých oborech: globální, produktové nebo specifické pro rozhraní API. Tato flexibilita umožňuje přizpůsobit omezení rychlosti podle požadavků a vzorů využití rozhraní API.

Než začnete implementovat omezování rychlosti, rozhodněte se o omezeních rychlosti. Limity, které nastavíte, závisí na kapacitě vašeho rozhraní API a očekávaném provozu. Běžná omezení jsou nastavená 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 rozhraní API v Azure API Management, použijte rate-limit zásady neborate-limit-by-key. První z nich nastaví limit pro všechny uživatele, zatímco druhý umožňuje omezení pro identifikovaný klíč (jako je 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 hlavičkou retry-after odpovědi a zprávou, že 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 u hlaviček odpovědí

Azure API Management ve výchozím nastavení nezpřístupňuje informace o limitu rychlosti u hlaviček odpovědí. Nekomunikování limitů rychlosti ztěžuje aplikacím vyhnout se překročení limitu a omezování. Pokud chcete zveřejnit informace o limitu rychlosti, rozšiřte zásadu rate-limitremaining-calls-header-name o vlastnosti a total-calls-header-name .

<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 , které sdělují, kolik dalších volání může rozhraní API zpracovat před překročením limitu.

Souhrn

Implementace omezování rychlosti v Azure API Management pomáhá vytvářet robustní a škálovatelná rozhraní API. Pomocí omezení rychlosti můžete zajistit, aby rozhraní API sloužilo uživatelům spolehlivě a efektivně. Nezapomeňte, že klíčem je najít správnou rovnováhu – příliš striktní a můžete bránit použitelnosti; příliš benient a riskujete, že vaše rozhraní API zahlcení. Díky pečlivému plánování a průběžnému monitorování můžete dosáhnout této rovnováhy a udržovat dobré prostředí rozhraní API.

Další kroky