Implementera hastighetsbegränsning i Azure API Management

Med hjälp av 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, partner och interna utvecklare. Den innehåller verktyg för att skydda, hantera och skala API-anrop. En av dess funktioner är att styra 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 hastighetsbegränsningarna. 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örstnämnda 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 statuskoden 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."
}

Visa information om hastighetsbegränsning i svarshuvuden

Som standard exponerar Azure API Management inte information om hastighetsbegränsning för svarshuvuden. Att inte kommunicera hastighetsgränser gör det svårt för appar att undvika att överskrida gränsen och begränsas. Om du vill visa information om hastighetsbegränsning utökar rate-limit du principen med remaining-calls-header-name egenskaperna och 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>

När du anropar ditt API nu innehåller ratelimit-remainingratelimit-limit varje svar och -huvuden, 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