Algorithmen zur Ratenbegrenzung
Vergleichen Sie feste, gleitende, Token- und Nebenläufigkeitsbegrenzer.
Algorithmen zur Ratenbegrenzung ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Rate Limiting?
Rate Limiting begrenzt, wie viele Anfragen ein Client innerhalb eines Zeitfensters stellen kann. Es schützt Ihre API vor Missbrauch, außer Kontrolle geratenen Clients und versehentlichen Verkehrsspitzen und sorgt für eine faire Kapazitätsverteilung zwischen den Benutzern.
// e.g. allow 100 requests per minute per API keyIntegriertes Rate Limiting
Seit .NET 7 bietet ASP.NET Core eine integrierte Middleware für Rate Limiting in Microsoft.AspNetCore.RateLimiting mit vier integrierten Algorithmen.
// Algorithms: Fixed Window, Sliding Window,
// Token Bucket, ConcurrencyFestes Zeitfenster
Der Algorithmus für das feste Zeitfenster erlaubt N Anfragen pro festgelegtem Zeitblock. Wenn der Block endet, wird der Zähler auf null zurückgesetzt.
Das ist einfach, aber Lastspitzen an den Grenzen eines Zeitfensters können die effektive Rate kurzzeitig verdoppeln.
// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 secondsGleitendes Zeitfenster
Das gleitende Zeitfenster glättet das Problem an den Grenzen, indem es das Zeitfenster in Segmente unterteilt und abgelaufene Segmente weiterschiebt. Dadurch gilt das Limit für jedes zusammenhängende Zeitfenster.
// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expiresToken-Bucket
Der Token-Bucket enthält einen Vorrat an Token. Jede Anfrage verbraucht einen Token; Token werden kontinuierlich aufgefüllt. Dadurch sind kurze Lastspitzen bis zur Größe des Buckets möglich, während langfristig ein Durchschnittswert eingehalten wird.
// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 secondsParallelitätsbegrenzer
Der Begrenzer für Parallelität funktioniert anders: Er begrenzt die Anzahl der Anfragen, die gleichzeitig verarbeitet werden, und nicht die Anzahl pro Zeiteinheit. Das ist ideal zum Schutz aufwendiger Operationen.
// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejectedDie Warteschlange
Jeder Begrenzer kann Anfragen, die das Limit überschreiten, in eine Warteschlange einreihen, anstatt sie sofort abzulehnen. QueueLimit legt die Größe der Warteschlange fest, und QueueProcessingOrder bestimmt die Fairness (älteste oder neueste Anfrage zuerst).
// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429Einen Algorithmus auswählen
Wählen Sie den Algorithmus passend zum Ziel:
- Festes Zeitfenster: am einfachsten und für viele Fälle ausreichend.
- Gleitendes Zeitfenster: gleichmäßiger und ohne Lastspitzen an Zeitfenstergrenzen.
- Token-Bucket: ermöglicht kontrollierte Lastspitzen.
- Parallelität: begrenzt die gleichzeitige Last, nicht die Rate.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrencyPartitionierung
Limits werden pro Partitionsschlüssel angewendet – normalerweise pro Benutzer, API-Schlüssel oder IP-Adresse –, damit ein einzelner stark ausgelasteter Client nicht das Kontingent aller aufbraucht. Eine einzige gemeinsame Partition würde den gesamten Datenverkehr gemeinsam begrenzen.
// Partition by user id, IP, or API key
// Each partition gets its own independent counterWas der Client sieht
Eine abgelehnte Anfrage liefert HTTP 429 Too Many Requests. Eine gut implementierte API liefert außerdem einen Retry-After-Header zurück, der dem Client mitteilt, wann er es erneut versuchen soll.
// HTTP/1.1 429 Too Many Requests
// Retry-After: 30Rate Limiting, Throttling und Kontingente im Vergleich
Verwandte Konzepte: Rate Limiting begrenzt die kurzfristige Häufigkeit, Kontingente begrenzen längerfristige Gesamtmengen (pro Tag oder Monat), und Throttling verlangsamt Anfragen, anstatt sie abzulehnen. Die Middleware konzentriert sich auf Rate Limiting.
// rate limit: 100/min quota: 10000/dayKurzprüfung
Testen Sie Ihr Verständnis der Algorithmen.
Zusammenfassung
Sie haben die Grundlagen des Rate Limitings kennengelernt:
- Vier Algorithmen: festes Zeitfenster, gleitendes Zeitfenster, Token-Bucket und Parallelität.
- Der Token-Bucket erlaubt Lastspitzen; die Parallelität begrenzt die gleichzeitige Last.
- Limits werden pro Partitionsschlüssel angewendet; Warteschlangen glätten Überlastungen.
- Abgelehnte Anfragen erhalten 429 mit
Retry-After.
Als Nächstes: die Middleware konfigurieren.
Häufig gestellte Fragen
Ist die Lektion „Algorithmen zur Ratenbegrenzung“ kostenlos?
Ja — der vollständige Text von „Algorithmen zur Ratenbegrenzung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Algorithmen zur Ratenbegrenzung“?
Vergleichen Sie feste, gleitende, Token- und Nebenläufigkeitsbegrenzer. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Algorithmen zur Ratenbegrenzung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Algorithmen zur Ratenbegrenzung
- Rate-Limiting-Middleware konfigurieren
- Grundlagen des Output-Caching
- Cache-Richtlinien und Invalidierung