Dela via


Implementera hastighetsbegränsning i Azure API Management

Med hastighetsbegränsning kan du begränsa antalet API-anrop som en användare eller tjänst kan göra inom en viss tidsram. Hastighetsbegränsning hjälper dig att säkerställa rättvis användning och förhindrar att en enskild användare eller tjänst monopoliserar API-resurserna. Azure API Management (APIM) är ett bekvämt sätt att implementera hastighetsbegränsning för dina API:er.

Varför Azure API Management?

Azure API Management är en kraftfull och mångsidig molntjänst som hjälper organisationer att publicera API:er till externa, partnerbaserade och interna utvecklare. Den innehåller verktyg för att skydda, hantera och skala API-anrop. En av dess funktioner är att kontrollera hastighetsbegränsningen, vilket är användbart för att upprätthålla hälsotillståndet och tillförlitligheten för dina API:er.

Konfigurera hastighetsbegränsning i Azure API Management

Azure API Management använder principer för att framtvinga hastighetsbegränsning. Du kan definiera dessa principer i olika omfång: global, produkt eller API-specifik. Med den här flexibiliteten kan du anpassa hastighetsbegränsningen enligt api:ets krav och användningsmönster.

Innan du börjar implementera hastighetsbegränsning ska du bestämma hastighetsgränserna. Vilka gränser du anger beror på ditt API:s kapacitet och vilken trafik du förväntar dig. Vanliga gränser anges som ett antal anrop per sekund, minut eller timme. Du kan till exempel tillåta 1 000 samtal per minut per användare.

Om du vill definiera hastighetsbegränsningar för ditt API i Azure API Management använder du rate-limit principerna eller rate-limit-by-key . Den förra anger en gräns för alla användare, medan den senare tillåter gränser per identifierad nyckel (till exempel en prenumeration eller ett användar-ID).

Här är ett exempel på en princip som begränsar anropen till 1 000 per minut.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

När du överskrider det angivna antalet anrop skickar Azure API Management en statuskod på 429 för många begäranden, tillsammans med retry-after svarshuvudet och ett meddelande som anger när du kan försöka igen.

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."
}

Exponera information om hastighetsbegränsning i svarshuvuden

Som standardinställning exponerar Azure API Management inte information om hastighetsbegränsningar i svarshuvudena. Att inte kommunicera hastighetsgränser gör det svårt för appar att undvika att överskrida gränsen och begränsas. För att exponera information om hastighetsbegränsning utökar du rate-limit principen med remaining-calls-header-name och total-calls-header-name egenskaperna.

<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>

När du anropar ditt API nu innehåller varje svar rubrikerna ratelimit-remaining och ratelimit-limit som kommunicerar hur många fler anrop API:et kan hantera innan gränsen överskrids.

Sammanfattning

Genom att implementera hastighetsbegränsning i Azure API Management kan du skapa robusta och skalbara API:er. Genom att använda hastighetsbegränsning kan du se till att ditt API hanterar användarna på ett tillförlitligt och effektivt sätt. Kom ihåg att nyckeln är att hitta rätt balans – för strikt, och du kan hindra användbarhet; för överseende och du riskerar att överbelasta ditt API. Med noggrann planering och kontinuerlig övervakning kan du uppnå den här balansen och upprätthålla en felfri API-miljö.

Nästa steg