Algorithmes de limitation du débit
Comparez les limiteurs fixes, glissants, à jetons et de concurrence.
Algorithmes de limitation du débit est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Pourquoi limiter le débit ?
La limitation du débit plafonne le nombre de requêtes qu’un client peut effectuer pendant une période donnée. Elle protège votre API contre les abus, les clients hors de contrôle et les pics de trafic accidentels, tout en répartissant équitablement la capacité entre les utilisateurs.
// e.g. allow 100 requests per minute per API keyLimitation du débit intégrée
Depuis .NET 7, ASP.NET Core fournit un intergiciel de limitation du débit intégré dans Microsoft.AspNetCore.RateLimiting, avec quatre algorithmes intégrés.
// Algorithms: Fixed Window, Sliding Window,
// Token Bucket, ConcurrencyFenêtre fixe
L’algorithme de fenêtre fixe autorise N requêtes par bloc de temps fixe. Lorsque le bloc se termine, le compteur revient à zéro.
Cette approche est simple, mais les rafales à la limite entre deux fenêtres peuvent brièvement doubler le débit effectif.
// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 secondsFenêtre glissante
La fenêtre glissante atténue le problème des limites entre fenêtres en divisant la fenêtre en segments et en faisant avancer les segments arrivés à expiration, de sorte que la limite s’applique sur toute fenêtre continue.
// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expiresSeau de jetons
Le seau de jetons contient des jetons. Chaque requête en consomme un, et les jetons sont réapprovisionnés à un rythme régulier. Il autorise de courtes rafales allant jusqu’à la capacité du seau, tout en maintenant une moyenne à long terme.
// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 secondsLimiteur de concurrence
Le limiteur de concurrence est différent : il plafonne le nombre de requêtes en cours de traitement au même moment, et non par unité de temps. Il est idéal pour protéger les opérations coûteuses.
// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejectedLa file d’attente
Chaque limiteur peut mettre en file d’attente les requêtes qui dépassent la limite au lieu de les rejeter immédiatement. QueueLimit définit la taille de la file et QueueProcessingOrder définit l’ordre de traitement (les plus anciennes ou les plus récentes en premier).
// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429Choisir un algorithme
Adaptez l’algorithme à l’objectif :
- Fenêtre fixe : la solution la plus simple, suffisante dans de nombreux cas.
- Fenêtre glissante : plus régulière, elle évite les rafales aux limites des fenêtres.
- Seau de jetons : il autorise des rafales contrôlées.
- Concurrence : elle limite la charge simultanée, et non le débit.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrencyPartitionnement
Les limites sont appliquées par clé de partition — généralement l’utilisateur, la clé d’API ou l’adresse IP — afin qu’un client bruyant ne puisse pas épuiser le quota de tout le monde. Une partition unique et partagée limiterait tout le trafic conjointement.
// Partition by user id, IP, or API key
// Each partition gets its own independent counterCe que voit le client
Une requête rejetée renvoie HTTP 429 Too Many Requests. Une API bien conçue renvoie également un en-tête Retry-After indiquant au client quand réessayer.
// HTTP/1.1 429 Too Many Requests
// Retry-After: 30Limitation du débit, régulation et quotas
Ces notions sont liées : la limitation du débit encadre la fréquence à court terme, les quotas encadrent les totaux sur une période plus longue (par jour ou par mois), et la régulation ralentit les requêtes au lieu de les rejeter. L’intergiciel se concentre sur la limitation du débit.
// rate limit: 100/min quota: 10000/dayVérification rapide
Vérifiez votre compréhension des algorithmes.
Récapitulatif
Vous avez découvert les concepts de limitation du débit :
- Quatre algorithmes : fenêtre fixe, fenêtre glissante, seau de jetons et concurrence.
- Le seau de jetons autorise les rafales ; la concurrence plafonne la charge simultanée.
- Les limites sont appliquées par clé de partition ; les files d’attente absorbent les dépassements.
- Les requêtes rejetées reçoivent 429 avec
Retry-After.
Ensuite : configurer l’intergiciel.
Questions Fréquemment Posées
La leçon « Algorithmes de limitation du débit » est-elle gratuite ?
Oui — le texte complet de « Algorithmes de limitation du débit » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Algorithmes de limitation du débit » ?
Comparez les limiteurs fixes, glissants, à jetons et de concurrence. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Algorithmes de limitation du débit » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Algorithmes de limitation du débit
- Configurer le middleware de limitation du débit
- Bases de la mise en cache des sorties
- Politiques de cache et invalidation