Udostępnij za pośrednictwem


Ograniczanie liczby wywołań według subskrypcji

DOTYCZY: Wszystkie warstwy usługi API Management

Zasady rate-limit uniemożliwiają skoki użycia interfejsu API dla poszczególnych subskrypcji przez ograniczenie liczby wywołań do określonej liczby na określony okres. Po przekroczeniu szybkości wywołania obiekt wywołujący otrzymuje 429 Too Many Requests kod stanu odpowiedzi.

Aby zrozumieć różnicę między limitami szybkości i limitami przydziałów, zobacz Limity szybkości i limity przydziału.

Uwaga

Ze względu na rozproszony charakter architektury ograniczania przepustowości ograniczanie szybkości nigdy nie jest całkowicie dokładne. Różnica między skonfigurowaną a rzeczywistą liczbą dozwolonych żądań różni się w zależności od liczby i szybkości żądań, opóźnienia wewnętrznej baza danych i innych czynników.

Uwaga

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.

Instrukcja zasad

<rate-limit calls="number" renewal-period="seconds"  retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-calls-header-name="header name"  
        remaining-calls-variable-name="policy expression variable name"
        total-calls-header-name="header name">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Atrybuty

Atrybut opis Wymagani Wartość domyślna
Wywołania Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy
okres odnowienia Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls. Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy
retry-after-header-name Nazwa niestandardowego nagłówka odpowiedzi, którego wartość jest zalecanym interwałem ponawiania prób w sekundach po przekroczeniu określonej liczby wywołań. Wyrażenia zasad nie są dozwolone. Nie. Retry-After
retry-after-variable-name Nazwa zmiennej, która przechowuje zalecany interwał ponawiania prób w sekundach po przekroczeniu określonej liczby wywołań. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
remaining-calls-header-name Nazwa nagłówka odpowiedzi, którego wartość po każdym wykonaniu zasad jest liczbą pozostałych wywołań dozwolonych dla przedziału czasu określonego w obiekcie renewal-period. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
remaining-calls-variable-name Nazwa zmiennej, która po każdym wykonaniu zasad przechowuje liczbę pozostałych wywołań dozwolonych dla przedziału czasu określonego w obiekcie renewal-period. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
total-calls-header-name Nazwa nagłówka odpowiedzi, którego wartość jest wartością określoną w callspliku . Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy

Elementy

Element opis Wymagania
api Dodaj co najmniej jeden z tych elementów, aby narzucić limit liczby wywołań interfejsom API w ramach produktu. Limity szybkości wywołań produktu i interfejsu API są stosowane niezależnie. Do interfejsu API można odwoływać się za pośrednictwem metody name lub id. Jeśli podano oba atrybuty, id zostaną użyte i name zostaną zignorowane. Nie.
rozdzielnicy Dodaj co najmniej jeden z tych elementów, aby narzucić limit liczby wywołań dla operacji w interfejsie API. Limity szybkości wywołań produktu, interfejsu API i operacji są stosowane niezależnie. Do operacji można odwoływać się za pośrednictwem metody name lub id. Jeśli podano oba atrybuty, id zostaną użyte i name zostaną zignorowane. Nie.

atrybuty interfejsu API

Atrybut opis Wymagani Wartość domyślna
name Nazwa interfejsu API, dla którego ma być stosowany limit szybkości. id Albo name musi być określony. Nie dotyczy
identyfikator Identyfikator interfejsu API, dla którego ma być stosowany limit szybkości. id Albo name musi być określony. Nie dotyczy
Wywołania Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy
okres odnowienia Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls. Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy

atrybuty operacji

Atrybut opis Wymagani Wartość domyślna
name Nazwa operacji, dla której ma być stosowany limit szybkości. id Albo name musi być określony. Nie dotyczy
identyfikator Identyfikator operacji, dla której ma być stosowany limit szybkości. id Albo name musi być określony. Nie dotyczy
Wywołania Maksymalna całkowita liczba wywołań dozwolonych w przedziale czasu określonym w pliku renewal-period. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy
okres odnowienia Długość w sekundach okna przesuwanego, w którym liczba dozwolonych żądań nie powinna przekraczać wartości określonej w pliku calls. Maksymalna dozwolona wartość: 300 sekund. Wyrażenia zasad nie są dozwolone. Tak Nie dotyczy

Użycie

Uwagi dotyczące użycia

  • Te zasady mogą być używane tylko raz na definicję zasad.
  • Te zasady są stosowane tylko wtedy, gdy dostęp do interfejsu API jest uzyskiwany przy użyciu klucza subskrypcji.
  • Liczbę limitów szybkości w bramie hostowanej samodzielnie można skonfigurować do synchronizowania lokalnie (między wystąpieniami bramy między węzłami klastra), na przykład za pomocą wdrożenia wykresu helm dla platformy Kubernetes lub szablonów wdrażania w witrynie Azure Portal. Jednak liczby limitów szybkości nie są synchronizowane z innymi zasobami bramy skonfigurowanymi w wystąpieniu usługi API Management, w tym z bramą zarządzaną w chmurze. Dowiedz się więcej

Przykład

W poniższym przykładzie limit liczby wywołań na subskrypcję wynosi 20 wywołań na 90 sekund. Po każdym wykonaniu zasad pozostałe wywołania dozwolone w okresie są przechowywane w zmiennej remainingCallsPerSubscription.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: