Antywzór: skonfiguruj limit nieprzydzielony

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Apigee Edge umożliwia skonfigurowanie liczby dozwolonych żądań do serwera proxy API w przypadku w wybranym okresie za pomocą zasad dotyczących limitów.

Antywzór

Żądanie do serwera proxy interfejsu API może być obsługiwane przez co najmniej jeden rozproszony komponent Edge nazywany Procesory wiadomości. Jeśli do obsługi interfejsu API skonfigurowano kilka procesorów wiadomości wtedy limit zostanie prawdopodobnie przekroczony, ponieważ każdy procesor wiadomości „count” przetwarzanych żądań.

Wyjaśnimy to za pomocą przykładu. Rozważ stosowanie tych zasad dotyczących limitów dotyczących interfejsu API. serwer proxy:

<!-- /antipatterns/examples/1-6.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

Powyższa konfiguracja powinna zezwalać łącznie na 100 żądań na godzinę.

Jeśli jednak w praktyce wiele firm przetwarzających wiadomości obsługuje żądania do interfejsu API, dzieje się coś takiego:

Na ilustracji powyżej:

  • Zasada limitów jest skonfigurowana tak, aby zezwalać na 100 żądań na godzinę.
  • Żądania wysyłane do serwera proxy interfejsu API są obsługiwane przez dwa procesory wiadomości.
  • Każdy procesor wiadomości obsługuje własną zmienną liczby limitów (quota_count_mp1) i quota_count_mp2, aby śledzić liczbę przetwarzanych żądań.
  • Dlatego każdy procesor wiadomości zezwala na wysłanie 100 osobnych żądań do interfejsu API. Efekt netto oznacza, że przetworzone zostaje 200 żądań zamiast 100.

Wpływ

Taka sytuacja jest sprzeczne z celem konfiguracji limitów i może mieć negatywny wpływ na serwery backendu, które obsługują żądania.

Serwery backendu mogą:

  • odczuwać stres z powodu większego niż oczekiwanego ruchu przychodzącego;
  • nie odpowiada na nowsze żądania do interfejsu API, które powodują błędy 503;

Sprawdzona metoda

Rozważ ustawienie elementu <Distributed> na true w zasadach dotyczących limitów na upewnij się, że do śledzenia żądań do interfejsu API przez wszystkie procesory wiadomości używany jest wspólny licznik. Element <Distributed> można ustawić w sposób pokazany poniżej we fragmencie kodu:

<!-- /antipatterns/examples/1-7.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Distributed>true</Distributed>
  <Allow count="100"/>
</Quota>