Co to jest ograniczanie szybkości?
Ograniczanie szybkości to mechanizm kontroli używany przez interfejsy API chmury do regulowania liczby żądań, które użytkownik może wykonać w danym przedziale czasu. Producenci interfejsów API w chmurze używają ograniczania szybkości, aby upewnić się, że przepływ żądań nie przeciąża usługi. Ograniczanie szybkości ustawia limit szybkości i liczby wywołań interfejsu API, zwykle definiowanych pod względem żądań w danym okresie.
Dlaczego interfejsy API w chmurze używają ograniczania szybkości
- Zapobiegaj przeciążeniu. Ograniczanie szybkości zapewnia, że serwer interfejsu API pozostaje stabilny i dynamiczny, uniemożliwiając każdemu jednemu użytkownikowi lub usłudze zalanie go zbyt wieloma żądaniami.
- Upewnij się, że jest to sprawiedliwe użycie. Ograniczanie szybkości wymusza zasady sprawiedliwego użycia, zapewniając, że żaden pojedynczy użytkownik nie monopolizuje zasobów interfejsu API, umożliwiając sprawiedliwy dostęp do wszystkich użytkowników.
- Zabezpieczenia. Pomaga to w ograniczaniu ataków DDoS (rozproszonej odmowy usługi) i innych obraźliwych zachowań przez ograniczenie liczby żądań z potencjalnie złośliwych źródeł.
- Zarządzanie kosztami. W przypadku dostawców usług w chmurze ograniczanie szybkości pomaga w zarządzaniu kosztami operacyjnymi, zapobiegając nieprzewidywalnemu lub nadmiernemu wykorzystaniu zasobów.
- Jakość usług. Uniemożliwiając skoki ruchu, ograniczanie szybkości zapewnia spójną jakość usług dla wszystkich użytkowników.
Jak występuje ograniczanie szybkości w aplikacjach
Podczas tworzenia aplikacji, które integrują interfejsy API w chmurze, sprawdź ich dokumentację, aby sprawdzić, czy obsługują one ograniczanie szybkości. Jeśli tak, otrzymasz RateLimit-...
lub X-RateLimit-...
nagłówki odpowiedzi z informacjami o limitach szybkości. Te informacje można użyć w aplikacji, aby upewnić się, że nie przekraczasz limitów szybkości interfejsu API. Na przykład RateLimit-Remaining
nagłówek wskazuje liczbę żądań pozostałych w bieżącym oknie. Jeśli otrzymasz odpowiedź z tym nagłówkiem ustawionym na 0, wiesz, że osiągnięto limit szybkości i powinien poczekać na następne okno przed wysłaniem kolejnego żądania. Nagłówek RateLimit-Reset
wskazuje czas resetowania limitu szybkości. Należy pamiętać, że niektóre interfejsy API wysyłają RateLimit-...
nagłówki tylko po osiągnięciu progu, na przykład gdy masz 10% pozostałych żądań.
Po przekroczeniu limitu szybkości interfejs API ogranicza żądania zwracające kod stanu HTTP 429 (Zbyt wiele żądań). Niektóre interfejsy API mogą również wysyłać Retry-After
nagłówek wskazujący, jak długo należy czekać przed wysłaniem innego żądania.
Aby uniknąć ograniczania przepustowości i upewnić się, że aplikacja pozostaje elastyczna, należy zaimplementować ograniczanie szybkości w aplikacji. W zależności od stosu technologii istnieją różne biblioteki, które ułatwiają obsługę ograniczania szybkości w aplikacji. Po zaimplementowaniu ograniczania szybkości w aplikacji przetestuj, czy obsługuje ona prawidłowe ograniczanie szybkości.