Resilienz
Eintrag zuletzt aktualisiert am: 28.04.2024
In Bezug auf Software und Technologie bezieht sich Resilienz auf die Fähigkeit eines Systems, widerstandsfähig gegen Störungen, Fehler und Ausfälle zu sein, während es dennoch seine Funktionalität beibehält oder sich schnell wiederherstellt. Ähnlich wie bei der menschlichen Resilienz geht es darum, wie gut ein System mit unerwarteten Herausforderungen umgehen kann, ohne seinen Betrieb vollständig einzustellen oder seinen Benutzern einen erheblichen Serviceausfall zu bieten.
Resilienz in .NET mit Polly
In der .NET-Community hat sich dazu seit einigen Jahren die Bibliothek "Polly"
https://www.thepollyproject.org/ durchgesetzt, die von der Firma App vNext hergestellt und unter Führung von Joel Hulen
https://www.thepollyproject.org/author/joel als
Open Source auf GitHub bereitsteht:
https://github.com/App-vNext/Polly. Polly wird unterstützt von der
.NET Foundation.
Polly ist eine .NET-Resilienz- und Fehlerbehandlungs-Bibliothek, die es Entwicklerinnen und Entwickler ermöglicht, Richtlinien für verschiedene Aspekte wie Zeitüberschreitungen (Timeouts), Wiederholung (Retry), Überlastungsschutz durch Trennschalter (Circuit Breaker) und Rückfall auszudrücken.
Polly gibt es auf NuGet.org
https://www.nuget.org/packages/polly/ für das klassisches
.NET Framework ab Version 4.6.2 und das moderne .NET ab
.NET Core 2.0. Für die Dokumentation gibt es eine eigene Website:
https://www.pollydocs.org/
Was kann Polly?
Polly drückt seine Fähigkeiten selbst auf der Startseite der Dokumentation
https://www.pollydocs.org/ aus:
- Retry: Versuche es erneut, wenn etwas fehlschlägt. Dies kann nützlich sein, wenn das Problem vorübergehend ist und möglicherweise verschwindet.
- Circuit Breaker: Höre auf zu versuchen, wenn etwas kaputt oder beschäftigt ist. Dies kann dir helfen, Zeit zu sparen und die Dinge nicht noch schlimmer zu machen. Es kann auch dazu beitragen, dass das System sich erholt.
- Timeout: Gib auf, wenn etwas zu lange dauert. Dies kann deine Leistung verbessern, indem Platz und Ressourcen freigegeben werden.
- Rate Limiter: Begrenze, wie viele Anfragen du machst oder annimmst. Dies ermöglicht es dir, die Belastung zu kontrollieren und Probleme oder Strafen zu verhindern.
- Fallback: Tue etwas anderes, wenn etwas fehlschlägt. Dies kann die Benutzererfahrung verbessern und das Programm am Laufen halten.
- Hedging: Tue mehr als eine Sache gleichzeitig und wähle die schnellste aus. Dies kann dein Programm schneller und reaktionsfähiger machen.