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 zdefiniowanych 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 reaguje, uniemożliwiając każdemu 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 łagodzeniu 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, uniemożliwiając nieprzewidywalne lub nadmierne wykorzystanie zasobów.
- Jakość usług. Dzięki zapobieganiu skokom ruchu ograniczanie szybkości zapewnia spójną jakość usług dla wszystkich użytkowników.
Jak występuje ograniczanie szybkości w aplikacjach
Podczas kompilowania aplikacji, które integrują interfejsy API w chmurze, zapoznaj się z dokumentacją, aby sprawdzić, czy obsługują one ograniczanie szybkości. Jeśli tak, otrzymasz nagłówki odpowiedzi lub X-RateLimit-...
uzyskasz RateLimit-...
informacje o limitach szybkości. Możesz użyć tych informacji 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 wartość 0, wiesz, że osiągnięto limit szybkości i powinien czekać na następne okno przed wysłaniem kolejnego żądania. Nagłówek RateLimit-Reset
wskazuje czas resetowania limitu szybkości. Pamiętaj, że niektóre interfejsy API wysyłają RateLimit-...
tylko nagłówki 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 dynamiczna, 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.