0Pricing
C# Academy · Lekcja

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 key

Wbudowane 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, Concurrency

Stał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 seconds

Przesuwne 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 expires

Wiadro 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 seconds

Ogranicznik 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 rejected

Kolejka

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/429

Wybó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 -> concurrency

Partycjonowanie

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 counter

Co 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: 30

Ograniczanie 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/day

Szybkie 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

  1. Algorytmy ograniczania przepustowości
  2. Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości
  3. Podstawy buforowania odpowiedzi
  4. Zasady buforowania i unieważnianie
← Powrót do C# Academy