Algorytmy ograniczania przepustowości
Porównuj ograniczniki stałe, przesuwne, tokenowe i współbieżności.
Algorytmy ograniczania przepustowości to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.
Po co ograniczać liczbę żądań?
Ograniczanie liczby żądań określa maksymalną liczbę żądań, jakie klient może wysłać w określonym przedziale czasu. Chroni API przed nadużyciami, niekontrolowanymi klientami i przypadkowymi skokami ruchu, a także zapewnia sprawiedliwy podział dostępnej przepustowości między użytkowników.
// e.g. allow 100 requests per minute per API keyWbudowane ograniczanie liczby żądań
Od wersji .NET 7 platforma ASP.NET Core zawiera natywne oprogramowanie pośredniczące do ograniczania liczby żądań w pakiecie Microsoft.AspNetCore.RateLimiting, oferujące cztery wbudowane algorytmy.
// Algorithms: Fixed Window, Sliding Window,
// Token Bucket, ConcurrencyStałe okno
Algorytm stałego okna pozwala na wykonanie N żądań w każdym stałym przedziale czasu. Po zakończeniu przedziału licznik jest zerowany.
To proste rozwiązanie, ale nagłe zwiększenie liczby żądań na granicy okna może chwilowo podwoić efektywną częstotliwość.
// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 secondsPrzesuwne okno
Przesuwne okno eliminuje problem granic, dzieląc okno na segmenty i przesuwając naprzód segmenty, których czas upłynął, dzięki czemu limit obowiązuje w każdym ciągłym oknie czasowym.
// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expiresWiadro tokenów
Wiadro tokenów przechowuje pulę tokenów. Każde żądanie zużywa jeden token, a tokeny są uzupełniane ze stałą częstotliwością. Rozwiązanie pozwala na krótkie serie żądań do rozmiaru wiadra, jednocześnie egzekwując średni limit w dłuższym okresie.
// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 secondsOgranicznik współbieżności
Ogranicznik współbieżności działa inaczej: ogranicza liczbę żądań przetwarzanych w tym samym czasie, a nie w jednostce czasu. Doskonale nadaje się do ochrony kosztownych operacji.
// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejectedKolejka
Każdy ogranicznik może kolejkować żądania przekraczające limit zamiast natychmiast je odrzucać. QueueLimit określa rozmiar kolejki, a QueueProcessingOrder ustala kolejność obsługi, według najstarszych lub najnowszych żądań.
// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429Wybór algorytmu
Algorytm należy dobrać do celu:
- Stałe okno: najprostsze rozwiązanie, wystarczające w wielu przypadkach.
- Przesuwne okno: zapewnia płynniejsze działanie i zapobiega skokom na granicach okna.
- Wiadro tokenów: pozwala na kontrolowane serie żądań.
- Współbieżność: ogranicza jednoczesne obciążenie, a nie częstotliwość żądań.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrencyPartycjonowanie
Limity są stosowane dla każdego klucza partycji — zwykle użytkownika, klucza API lub adresu IP — dzięki czemu jeden intensywnie korzystający klient nie może wyczerpać wspólnego limitu. Pojedyncza współdzielona partycja ograniczałaby cały ruch razem.
// Partition by user id, IP, or API key
// Each partition gets its own independent counterCo widzi klient
Odrzucone żądanie zwraca kod HTTP 429 Too Many Requests. Dobrze zaimplementowane API zwraca również nagłówek Retry-After, który informuje klienta, kiedy może spróbować ponownie.
// HTTP/1.1 429 Too Many Requests
// Retry-After: 30Ograniczanie liczby żądań a dławienie i limity
Powiązane pojęcia: ograniczanie liczby żądań ogranicza krótkoterminową częstotliwość, limity określają długoterminową łączną liczbę żądań (na dzień lub miesiąc), a dławienie spowalnia żądania zamiast je odrzucać. Oprogramowanie pośredniczące koncentruje się na ograniczaniu liczby żądań.
// rate limit: 100/min quota: 10000/daySzybkie sprawdzenie
Należy sprawdzić znajomość algorytmów.
Podsumowanie
Poznano koncepcje ograniczania liczby żądań:
- Cztery algorytmy: stałe okno, przesuwne okno, wiadro tokenów i współbieżność.
- Wiadro tokenów pozwala na serie żądań, a współbieżność ogranicza jednoczesne obciążenie.
- Limity są stosowane dla każdego klucza partycji, a kolejki pomagają obsługiwać nadmiar żądań.
- Odrzucone żądania otrzymują kod 429 oraz nagłówek
Retry-After.
Następnie: konfigurowanie oprogramowania pośredniczącego.
Często zadawane pytania
Czy lekcja „Algorytmy ograniczania przepustowości” jest bezpłatna?
Tak — pełny tekst „Algorytmy ograniczania przepustowości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Algorytmy ograniczania przepustowości”?
Porównuj ograniczniki stałe, przesuwne, tokenowe i współbieżności. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Algorytmy ograniczania przepustowości”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Algorytmy ograniczania przepustowości
- Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości
- Podstawy buforowania odpowiedzi
- Zasady buforowania i unieważnianie