Freigeben über


Implementieren von robusten Anwendungen

Tipp

Dieser Inhalt ist ein Auszug aus dem eBook .NET Microservices Architecture for Containerized .NET Applications, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.

.NET Microservices-Architektur für containerisierte .NET-Anwendungen eBook-Cover-Thumbnail.

Ihre Microservice- und cloudbasierten Anwendungen müssen die teilweisen Fehler umfassen, die sicherlich irgendwann auftreten werden. Sie müssen Ihre Anwendung so entwerfen, dass sie für diese Teilfehler widerstandsfähig ist.

Bei der Resilienz geht es um die Möglichkeit, nach Ausfällen eine Wiederherstellung durchzuführen und die Betriebsbereitschaft sicherzustellen. Es geht nicht darum, Fehler zu vermeiden, sondern die Tatsache zu akzeptieren, dass Fehler auftreten und auf eine Weise reagieren, die Ausfallzeiten oder Datenverluste verhindert. Ziel der Resilienz ist es, die Anwendung nach einem Fehler in einen voll funktionsfähigen Zustand zurückzugeben.

Es ist schwierig genug, eine mikroservicesbasierte Anwendung zu entwerfen und bereitzustellen. Sie müssen Ihre Anwendung aber auch in einer Umgebung ausführen, in der eine Art von Fehler unvermeidbar ist. Daher sollte Ihre Anwendung robust sein. Sie sollte dafür entworfen sein, mit Teilfehlern wie Netzwerkausfällen oder Knoten bzw. virtuellen Computern, die in der Cloud abstürzen, umzugehen. Selbst Microservices (Container), die in einen anderen Knoten innerhalb eines Clusters verschoben werden, können zu zeitweiligen kurzen Fehlern innerhalb der Anwendung führen.

Die vielen einzelnen Komponenten Ihrer Anwendung sollten auch Gesundheitsüberwachungsfunktionen enthalten. Anhand der Richtlinien in diesem Kapitel können Sie eine Anwendung erstellen, die trotz vorübergehender Ausfallzeiten oder der normalen Unterbrechungen, die in komplexen und cloudbasierten Bereitstellungen auftreten, reibungslos funktionieren kann.

Von Bedeutung

eShopOnContainer hatte die Polly-Bibliothek verwendet, um Resilienz mithilfe von Typed Clients bis zur Version 3.0.0 zu implementieren. Ab Release 3.0.0 wird die Resilienz von HTTP-Aufrufen mithilfe eines Linkerd-Mesh implementiert, das Wiederholungsversuche transparent und konfigurierbar innerhalb eines Kubernetes-Clusters verarbeitet, ohne diese Bedenken im Code behandeln zu müssen.

Die Polly-Bibliothek wird weiterhin verwendet, um Datenbankverbindungen widerstandsfähiger zu machen, insbesondere während des Hochfahrens der Dienste.

Warnung

Alle Codebeispiele und Bilder in diesem Abschnitt waren gültig, bevor Sie Linkerd verwenden und nicht aktualisiert werden, um den aktuellen tatsächlichen Code widerzuspiegeln. Daher sind sie im Kontext dieses Abschnitts sinnvoll.