Circuit-breakerpatroon
Stop tijdelijk met het aanroepen van falende services.
Circuit-breakerpatroon is een gratis C# Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.
Het probleem dat opnieuw proberen niet kan oplossen
Als een afhankelijkheid echt niet beschikbaar is, stapelen nieuwe pogingen bij elke aanvraag alleen maar extra belasting op en wordt je eigen app trager. Het patroon van de circuitonderbreker detecteert aanhoudende fouten en stopt tijdelijk met het aanroepen van de falende service.
Leren van elektronica
Net als een elektrische onderbreker die uitschakelt om een circuit te beschermen, schakelt dit patroon na te veel fouten naar de toestand Open en controleert het daarna automatisch of de afhankelijkheid is hersteld.
De drie toestanden
Een circuitonderbreker heeft drie toestanden: Gesloten (aanroepen verlopen normaal), Open (aanroepen worden direct geblokkeerd) en Halfopen (een proefaanroep controleert of herstel heeft plaatsgevonden).
De gesloten toestand
In de toestand Gesloten worden aanvragen doorgelaten en houdt Polly het foutenpercentage bij. Als het aantal fouten binnen het meetvenster de drempel overschrijdt, schakelt de onderbreker over naar Open.
De open toestand
In de toestand Open sluit Polly de aanroep kort: er wordt onmiddellijk een BrokenCircuitException opgegooid zonder de afhankelijkheid aan te roepen. Zo krijgt die de ruimte om te herstellen en mislukken aanroepen snel.
try
{
await pipeline.ExecuteAsync(token => CallServiceAsync(token));
}
catch (BrokenCircuitException)
{
// circuit is open, fail fast
}De halfopen toestand
Nadat de onderbrekingsduur is verstreken, gaat de onderbreker naar Halfopen en laat die één proefaanvraag toe. Bij succes wordt het circuit gesloten; bij een fout wordt het opnieuw geopend voor een volgende onderbrekingsperiode.
De onderbreker configureren
Polly v8 gebruikt CircuitBreakerStrategyOptions. Belangrijke instellingen zijn FailureRatio (bijvoorbeeld 0,5 = 50%), MinimumThroughput, SamplingDuration en 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 en MinimumThroughput
FailureRatio is het aandeel fouten dat de onderbreker activeert. MinimumThroughput zorgt ervoor dat de onderbreker pas na voldoende aanroepen wordt geactiveerd, zodat één vroege fout het circuit niet voortijdig opent.
Reageren op toestandswijzigingen
Gebruik de terugbelfuncties OnOpened, OnClosed en OnHalfOpened om overgangen in de logboekregistratie op te nemen of waarschuwingen te geven wanneer een afhankelijkheid slechter gaat werken.
new CircuitBreakerStrategyOptions
{
FailureRatio = 0.5,
OnOpened = args =>
{
Console.WriteLine($"Circuit opened for {args.BreakDuration}");
return default;
}
};Combineren met opnieuw proberen
Opnieuw proberen en een circuitonderbreker vullen elkaar aan: opnieuw proberen handelt korte storingen af, terwijl de onderbreker verdere pogingen stopt zodra de fout aanhoudt. De volgorde is belangrijk; daar komen we op terug in de les over pijplijnen.
Handmatige besturing
Je kunt een CircuitBreakerManualControl vasthouden om de onderbreker te isoleren, dus geforceerd te openen, of handmatig te sluiten. Dat is handig tijdens onderhoudsvensters.
var manualControl = new CircuitBreakerManualControl();
await manualControl.IsolateAsync(); // force open
await manualControl.CloseAsync(); // force closedKorte controle
Controleer het patroon van de circuitonderbreker.
Samenvatting
De circuitonderbreker beschermt overbelaste afhankelijkheden door te wisselen tussen de toestanden Gesloten, Open en Halfopen. In Polly v8 regelt AddCircuitBreaker met FailureRatio, MinimumThroughput, SamplingDuration en BreakDuration wanneer de onderbreker wordt geactiveerd. In de open toestand wordt BrokenCircuitException opgegooid, zodat aanroepen snel mislukken. Met terugbelfuncties en handmatige besturing kun je de toestand observeren en overschrijven.
Leer C# met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 93
- Lessen
- 346
Veelgestelde vragen
Is de les “Circuit-breakerpatroon” gratis?
Ja — de volledige tekst van “Circuit-breakerpatroon” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.
Wat leer ik in “Circuit-breakerpatroon”?
Stop tijdelijk met het aanroepen van falende services. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C# Academy te beginnen?
Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Circuit-breakerpatroon”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C# Academy?
Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Retry-beleid
- Circuit-breakerpatroon
- Timeout- en fallbackbeleid
- Resilience-pipelines