0Pricing
C# Academy · Lektion

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 key

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

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

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

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

Parallelitä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 rejected

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

Einen 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 -> concurrency

Partitionierung

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 counter

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

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

Kurzprü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

  1. Algorithmen zur Ratenbegrenzung
  2. Rate-Limiting-Middleware konfigurieren
  3. Grundlagen des Output-Caching
  4. Cache-Richtlinien und Invalidierung
← Zurück zu C# Academy