Jak zaimplementować ograniczanie szybkości w usłudze Azure API Management
Przy użyciu ograniczania szybkości można ograniczyć liczbę wywołań interfejsu API, które użytkownik lub usługa może wykonać w danym przedziale czasu. Ograniczanie szybkości pomaga zapewnić sprawiedliwe użycie i uniemożliwia każdemu jednemu użytkownikowi lub usłudze monopolizację zasobów interfejsu API. Usługa Azure API Management (APIM) zapewnia wygodny sposób implementowania ograniczania szybkości dla interfejsów API.
Dlaczego usługa Azure API Management?
Usługa Azure API Management to zaawansowana i wszechstronna usługa w chmurze, która pomaga organizacjom publikować interfejsy API dla deweloperów zewnętrznych, partnerskich i wewnętrznych. Udostępnia ona narzędzia do zabezpieczania wywołań interfejsu API, zarządzania nimi i skalowania. Jedną z jego funkcji jest kontrolowanie ograniczania szybkości, co jest przydatne do utrzymania kondycji i niezawodności interfejsów API.
Konfigurowanie ograniczania szybkości w usłudze Azure API Management
Usługa Azure API Management używa zasad do wymuszania ograniczania szybkości. Te zasady można zdefiniować w różnych zakresach: globalnych, produktowych lub specyficznych dla interfejsu API. Ta elastyczność umożliwia dostosowanie ograniczania szybkości zgodnie z wymaganiami interfejsu API i wzorcami użycia.
Przed rozpoczęciem implementowania ograniczania szybkości zdecyduj się na limity szybkości. Ustawione limity zależą od pojemności interfejsu API i oczekiwanego ruchu. Typowe limity są ustawiane jako liczba wywołań na sekundę, minutę lub godzinę. Na przykład możesz zezwolić na 1000 wywołań na minutę na użytkownika.
Aby zdefiniować limity szybkości interfejsu API w usłudze Azure API Management, użyj rate-limit
zasad lub rate-limit-by-key
. Pierwsze określa limit dla wszystkich użytkowników, podczas gdy ten ostatni zezwala na limity dla określonego klucza (np. subskrypcji lub identyfikatora użytkownika).
Oto przykład zasad, które ograniczają wywołania do 1000 na minutę.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Po przekroczeniu określonej liczby wywołań usługa Azure API Management wysyła kod stanu 429 Zbyt wiele żądań wraz z retry-after
nagłówkiem odpowiedzi i komunikatem wskazującym, kiedy można spróbować ponownie.
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."
}
Uwidacznianie informacji o limicie szybkości dla nagłówków odpowiedzi
Domyślnie usługa Azure API Management nie uwidacznia informacji o limicie szybkości dla nagłówków odpowiedzi. Brak komunikacji z limitami szybkości sprawia, że aplikacje trudno jest uniknąć przekroczenia limitu i ograniczenia przepustowości. Aby uwidocznić informacje o limicie szybkości, rozszerz rate-limit
zasady za remaining-calls-header-name
pomocą właściwości i 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>
Po wywołaniu interfejsu API każda odpowiedź zawiera ratelimit-remaining
nagłówki i ratelimit-limit
, które komunikują, ile więcej wywołań interfejsu API może obsłużyć przed przekroczeniem limitu.
Podsumowanie
Implementowanie ograniczania szybkości w usłudze Azure API Management ułatwia tworzenie niezawodnych i skalowalnych interfejsów API. Korzystając z ograniczania szybkości, możesz mieć pewność, że interfejs API będzie niezawodnie i wydajnie obsługiwał użytkowników. Pamiętaj, że kluczem jest znalezienie właściwej równowagi – zbyt ścisłej i może utrudnić użyteczność; zbyt łagodny i ryzykujesz przeciążenia interfejsu API. Dzięki starannemu planowaniu i ciągłego monitorowania można osiągnąć tę równowagę i zachować zdrowe środowisko interfejsu API.