Jak zaimplementować ograniczanie szybkości na platformie 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 pojedynczemu 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 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 na platformie 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: globalnym, produktowym lub specyficznym 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 lubrate-limit-by-key. Były określa limit dla wszystkich użytkowników, podczas gdy ten ostatni zezwala na limity na zidentyfikowany klucz (np. subskrypcja lub identyfikator 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ń platforma 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 w nagłówkach 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 na platformie Azure API Management ułatwia tworzenie niezawodnych i skalowalnych interfejsów API. Korzystając z ograniczania szybkości, możesz zapewnić, że interfejs API zapewnia użytkownikom niezawodną i wydajną obsługę. 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.

Następne kroki