Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości
Stosuj limity przepustowości dla poszczególnych endpointów i zasad.
Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 2 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.
AddRateLimiter
Konfigurację rozpoczyna się od dodania AddRateLimiter do kontenera usług. Należy zdefiniować co najmniej jedną nazwaną politykę oraz opcjonalny globalny kod stanu odrzucenia.
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode =
StatusCodes.Status429TooManyRequests;
});Polityka stałego okna
AddFixedWindowLimiter rejestruje nazwaną politykę. Należy ustawić limit zezwoleń, długość okna i zachowanie kolejki.
options.AddFixedWindowLimiter("fixed", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
limiter.QueueLimit = 0;
});Polityka przesuwnego okna
AddSlidingWindowLimiter udostępnia ustawienie SegmentsPerWindow, które określa dokładność wygładzania.
options.AddSlidingWindowLimiter("sliding", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.SegmentsPerWindow = 6;
limiter.QueueLimit = 0;
});Polityka wiadra tokenów
AddTokenBucketLimiter ustawia rozmiar wiadra i częstotliwość uzupełniania tokenów.
options.AddTokenBucketLimiter("token", limiter =>
{
limiter.TokenLimit = 100;
limiter.TokensPerPeriod = 20;
limiter.ReplenishmentPeriod = TimeSpan.FromSeconds(10);
limiter.QueueLimit = 0;
});Polityka współbieżności
AddConcurrencyLimiter ogranicza liczbę jednocześnie obsługiwanych żądań.
options.AddConcurrencyLimiter("concurrent", limiter =>
{
limiter.PermitLimit = 5;
limiter.QueueLimit = 10;
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
});Dodawanie oprogramowania pośredniczącego
Ograniczanie liczby żądań należy włączyć w potoku za pomocą UseRateLimiter. Powinno ono znajdować się odpowiednio wcześnie, po routingu.
var app = builder.Build();
app.UseRateLimiter();
app.MapControllers();RequireRateLimiting
Nazwaną politykę można zastosować do endpointów za pomocą RequireRateLimiting (Minimal API) lub atrybutu [EnableRateLimiting] (kontrolery).
app.MapGet("/search", () => Results.Ok())
.RequireRateLimiting("token");
// Controller equivalent:
// [EnableRateLimiting("token")]Wyłączanie dla konkretnych endpointów
Endpoint można wyłączyć z działania ogranicznika grupowego lub globalnego za pomocą DisableRateLimiting albo [DisableRateLimiting].
app.MapGet("/health", () => Results.Ok())
.DisableRateLimiting();Globalny ogranicznik z partycjami
GlobalLimiter stosuje się do każdego żądania. Za pomocą PartitionedRateLimiter.Create można przydzielić każdemu użytkownikowi lub adresowi IP własny licznik.
options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(
context =>
{
var key = context.User.Identity?.Name
?? context.Connection.RemoteIpAddress?.ToString()
?? "anon";
return RateLimitPartition.GetFixedWindowLimiter(key, _ =>
new FixedWindowRateLimiterOptions
{
PermitLimit = 100,
Window = TimeSpan.FromMinutes(1)
});
});Dostosowywanie odrzucania
OnRejected pozwala dodać nagłówek Retry-After lub przyjazną treść odpowiedzi, gdy żądanie zostanie ograniczone.
options.OnRejected = async (context, token) =>
{
if (context.Lease.TryGetMetadata(
MetadataName.RetryAfter, out var retry))
context.HttpContext.Response.Headers.RetryAfter =
((int)retry.TotalSeconds).ToString();
await context.HttpContext.Response
.WriteAsync("Rate limit exceeded.", token);
};Stosowanie do grupy tras
Politykę można przypisać do całej grupy tras, aby każdy znajdujący się w niej endpoint współdzielił limit.
var api = app.MapGroup("/api")
.RequireRateLimiting("fixed");
api.MapGet("/products", () => Results.Ok());
api.MapGet("/orders", () => Results.Ok());Szybkie sprawdzenie
Należy sprawdzić konfigurację oprogramowania pośredniczącego.
Podsumowanie
Skonfigurowano ograniczanie liczby żądań:
AddRateLimiterdefiniuje polityki stałego okna, przesuwnego okna, wiadra tokenów i współbieżności.UseRateLimiterwłącza oprogramowanie pośredniczące, aRequireRateLimitingstosuje politykę.GlobalLimiterwraz zPartitionedRateLimiterzapewnia osobne liczniki dla poszczególnych klientów.OnRejecteddostosowuje odpowiedź 429.
Następnie: buforowanie wyników.
Często zadawane pytania
Czy lekcja „Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości” jest bezpłatna?
Tak — pełny tekst „Konfigurowanie oprogramowania pośredniczącego 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 „Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości”?
Stosuj limity przepustowości dla poszczególnych endpointów i zasad. Ć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 2 z 4.
Ile czasu zajmuje lekcja „Konfigurowanie oprogramowania pośredniczącego 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