Modèle du coupe-circuit
Cessez temporairement d’appeler les services défaillants.
Modèle du coupe-circuit est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Le problème que les nouvelles tentatives ne peuvent pas résoudre
Si une dépendance est réellement hors service, retenter chaque requête ne fait qu’accroître la charge et ralentir votre propre application. Le modèle du disjoncteur détecte les défaillances persistantes et cesse d’appeler le service défaillant pendant un certain temps.
Inspiré de l’électronique
À l’image d’un disjoncteur électrique qui se déclenche pour protéger un circuit, ce modèle « ouvre le circuit » après un trop grand nombre de défaillances, puis vérifie automatiquement si la dépendance a récupéré.
Les trois états
Un disjoncteur possède trois états : Fermé, les appels circulent normalement ; Ouvert, les appels sont immédiatement bloqués ; et Semi-ouvert, un appel d’essai vérifie la récupération.
État fermé
À l’état Fermé, les requêtes passent et Polly suit le taux de défaillance. Si les défaillances dépassent le seuil pendant la fenêtre d’échantillonnage, le disjoncteur passe à l’état Ouvert.
État ouvert
À l’état Ouvert, Polly court-circuite l’appel : il lève immédiatement une BrokenCircuitException sans appeler la dépendance, lui laissant le temps de récupérer et faisant échouer rapidement les appels.
try
{
await pipeline.ExecuteAsync(token => CallServiceAsync(token));
}
catch (BrokenCircuitException)
{
// circuit is open, fail fast
}État semi-ouvert
Une fois la durée d’ouverture écoulée, le disjoncteur passe à l’état Semi-ouvert et autorise une requête d’essai. En cas de succès, le circuit se ferme ; en cas d’échec, il se rouvre pour une nouvelle période d’ouverture.
Configurer le disjoncteur
Polly v8 utilise CircuitBreakerStrategyOptions. Les principaux paramètres sont : FailureRatio, par exemple 0,5 = 50 %, MinimumThroughput, SamplingDuration et BreakDuration.
using Polly.CircuitBreaker;
var pipeline = new ResiliencePipelineBuilder()
.AddCircuitBreaker(new CircuitBreakerStrategyOptions
{
FailureRatio = 0.5,
MinimumThroughput = 10,
SamplingDuration = TimeSpan.FromSeconds(30),
BreakDuration = TimeSpan.FromSeconds(15)
})
.Build();FailureRatio et MinimumThroughput
FailureRatio est la proportion de défaillances qui déclenche le disjoncteur. MinimumThroughput garantit que le disjoncteur ne se déclenche qu’après un nombre suffisant d’appels, afin qu’une première défaillance ne l’ouvre pas prématurément.
Réagir aux changements d’état
Utilisez les fonctions de rappel OnOpened, OnClosed et OnHalfOpened pour journaliser les transitions ou déclencher des alertes lorsqu’une dépendance se dégrade.
new CircuitBreakerStrategyOptions
{
FailureRatio = 0.5,
OnOpened = args =>
{
Console.WriteLine($"Circuit opened for {args.BreakDuration}");
return default;
}
};Combiner avec les nouvelles tentatives
Les nouvelles tentatives et le disjoncteur se complètent : les nouvelles tentatives gèrent les brèves perturbations, tandis que le disjoncteur cesse de retenter lorsque la défaillance persiste. L’ordre est important ; nous y reviendrons dans la leçon consacrée aux chaînes.
Contrôle manuel
Vous pouvez conserver un CircuitBreakerManualControl pour isoler le disjoncteur, c’est-à-dire forcer son ouverture, ou le fermer manuellement, ce qui est utile pendant les périodes de maintenance.
var manualControl = new CircuitBreakerManualControl();
await manualControl.IsolateAsync(); // force open
await manualControl.CloseAsync(); // force closedVérification rapide
Vérifiez le modèle du disjoncteur.
Récapitulatif
Le disjoncteur protège les dépendances en difficulté en passant entre les états Fermé, Ouvert et Semi-ouvert. Avec Polly v8, AddCircuitBreaker, associé à FailureRatio, MinimumThroughput, SamplingDuration et BreakDuration, contrôle le déclenchement. L’état ouvert lève une BrokenCircuitException pour faire échouer rapidement l’appel, tandis que les fonctions de rappel et le contrôle manuel permettent d’observer et de modifier l’état.
Questions Fréquemment Posées
La leçon « Modèle du coupe-circuit » est-elle gratuite ?
Oui — le texte complet de « Modèle du coupe-circuit » 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 « Modèle du coupe-circuit » ?
Cessez temporairement d’appeler les services défaillants. 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 2 sur 4.
Combien de temps prend la leçon « Modèle du coupe-circuit » ?
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
- Politiques de nouvelle tentative
- Modèle du coupe-circuit
- Politiques de délai d’expiration et de solution de repli
- Pipelines de résilience