Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Genom att använda hastighetsbegränsning kan du begränsa antalet API-anrop som en användare eller tjänst kan göra under en viss tidsperiod. 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 är ett bekvämt sätt att implementera hastighetsbegränsning för dina API:er.
Varför ska du använda 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 antalet 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 . Principen rate-limit anger en gräns för alla användare. Principen rate-limit-by-key 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 429 Too Many Requests statuskod, 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 . Rubrikerna kommunicerar hur många fler anrop API:et kan hantera innan det överskrider gränsen.
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. Nyckeln är att hitta rätt balans. Om en hastighetsgräns är för strikt kan du hindra användbarheten. Om en hastighetsgräns är för överseende riskerar du 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ö.
Testa dina klienter
När du har implementerat hastighetsbegränsning för ditt API kontrollerar du att apparna som anropar ditt API hanterar det. När en klient överskrider en gräns som anges av rate-limit eller 429 Too Many Requests, returnerar API Management Retry-After med ett rate-limit-by-key-huvud. Klienter som ignorerar det fortsätter att göra nya försök och förblir strypta.
| Approach | Det här hittar du | Vad du saknar |
|---|---|---|
| Vänta tills produktionen är klar | Faktiskt kundbeteende | Varje klient som slutar fungera, tills dess användare når gränsen |
| Mock API Management i klientens tester | Om klientens återförsöksgren körs | Dina verkliga gränser, HTTP-huvuden och återställningstidpunkt och klientens verkliga HTTP-stack |
| Anropa DIN API Management-instans tills den stryps | Faktiskt beteende | Du behöver en testinstans och du kan inte nå gränsen på begäran utan att bränna anrop |
| Fånga upp klientens trafik och simulera dina begränsningar | Din gräns, ditt tidsfönster och dina HTTP-huvuden på den verkliga API-URL:en och om klienten väntar så länge som Retry-After anger |
Klientens kod i isolering. Behåll enhetstester för det. |
Dev Proxy simulerar det hastighetsbegränsningsbeteende som du har konfigurerat, med samma gräns, tidsperiod och svarshuvuden, medan klientappen fortsätter att anropa din verkliga API-URL. Använd RateLimitingPlugin med rateLimit och resetTimeWindowSeconds inställda på principens calls och renewal-period, costPerRequest inställt på 1 (standardvärdet är 2, som halverar din gräns) och headerLimit och headerRemaining inställda på rubriknamnen från principen. Lägg till RetryAfterPlugin innan det så att Dev Proxy meddelar dig när en klient anropar igen för tidigt. Mer information finns i Simulera API-svar för begränsning av begärandefrekvens. Information om hur du installerar Dev Proxy finns i Installera Dev Proxy.
- Hantera begränsning av begärandefrekvens: metodtips för klientappar