Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Microservices-Architektur verteilt die Verantwortung auf unabhängige Dienste. Diese Unabhängigkeit verändert, wie Sie die folgenden allgemeinen architektonischen Herausforderungen bewältigen:
- Wartung der Datenkonsistenz ohne verteilte Transaktionen
- Dienstübergreifendes Kommunikationsmanagement
- Fehlerisolation, sodass Fehler nicht kaskadieren
- Legacy-Systemintegration während der Migration
Die Entwurfsmuster in diesem Artikel behandeln diese Herausforderungen direkt. Jedes Muster zielt auf ein bestimmtes Problem ab, das beim Entwerfen, Erstellen und Betreiben von Microservices auftreten kann.
Allgemeine Entwurfsmuster
Antikorruptionsschicht implementiert eine Fassade oder Adapterschicht zwischen Subsystemen, die nicht dieselbe Semantik gemeinsam nutzen. Dieses Muster übersetzt Anforderungen zwischen Subsystemen und verhindert, dass Abhängigkeiten von älteren Systemen oder anderen Diensten mit inkompatiblen Domänenmodellen den Entwurf eines neuen Diensts einschränken.
Back-Ends für Frontends erstellen separate Back-End-Dienste für verschiedene Clienttypen, z. B. Desktop und Mobil. Bei diesem Ansatz muss ein einzelner Back-End-Dienst nicht die widersprüchlichen Anforderungen verschiedener Clienttypen behandeln. Dieses Muster hilft dabei, jeden Microservice einfach zu halten, indem clientspezifische Anforderungen getrennt werden.
Bulkhead isoliert kritische Ressourcen, z. B. Verbindungspools, Arbeitsspeicher und CPU, für jede Workload oder jeden Dienst. Diese Isolation verhindert, dass eine einzelne Workload oder ein Dienst alle Ressourcen verbraucht. Dieses Muster erhöht die Arbeitslastresilienz, indem verhindert wird, dass ein Dienst kaskadierende Fehler verursacht.
Die Choreographie ermöglicht jedem Dienst zu entscheiden, wann und wie ein Geschäftsvorgang verarbeitet werden soll, anstatt von einem zentralen Orchestrator abhängig zu sein. Dieses Muster reduziert die Kopplung zwischen Diensten und unterstützt häufige Dienstupdates oder -änderungen.
Die Befehlsabfrageverantwortungstrennung (Command Query Responsibility Segregation, CQRS) trennt Lesevorgänge von Schreibvorgängen in separate Datenmodelle. Dieses Muster verbessert die Leistung, Skalierbarkeit und Sicherheit in Microservices, bei denen Lese- und Schreibvorgänge unterschiedliche Leistungs- oder Skalierungsanforderungen aufweisen.
Gatewayrouting verwendet ein API-Gateway als Reverseproxy, um Clientanforderungen basierend auf der Anforderung an verschiedene Dienste weiterzuleiten. Dieser Ansatz bietet Clients einen einzelnen Endpunkt anstelle von vielen.
Die Gatewayaggregation verwendet das Gateway, um mehrere Clientanforderungen in einer einzigen Anforderung zu kombinieren. Dieser Ansatz reduziert die Chattigkeit zwischen Clients und Diensten.
Durch das Offloading des Gateways werden übergreifende Funktionen wie Ssl-Beendigung (Secure Socket Layer), Authentifizierung und Ratelimitierung in das Gateway zentralisiert, sodass einzelne Dienste diese Bedenken nicht separat implementieren müssen.
Weitere Informationen finden Sie unter API-Gateways für Microservices.
Saga verwaltet die Datenkonsistenz über Microservices hinweg, die unabhängige Datenspeicher aufweisen. Eine Saga ist eine Abfolge lokaler Transaktionen, in denen jeder Dienst seinen Betrieb ausführt und den nächsten Schritt auslöst. Wenn ein Schritt fehlschlägt, führt die Saga Ausgleichstransaktionen durch, um die vorherigen Änderungen rückgängig zu machen. Dieses Muster ersetzt verteilte Transaktionen, die häufig in einer Microservices-Architektur unpraktisch sind.
Sidecar stellt Hilfskomponenten einer Anwendung als separaten Container oder Prozess bereit, um Isolation und Kapselung bereitzustellen. Verwenden Sie dieses Muster, um allgemeine Funktionen wie Protokollierung, Überwachung und Netzwerkkonfiguration an einen Dienst anzufügen, ohne ihn in den Code des Diensts einzubetten.
Strangler Fig unterstützt die inkrementelle Migration von einem älteren System, indem bestimmte Funktionen schrittweise durch neue Dienste ersetzt werden. Verbraucher verwenden weiterhin dieselbe Schnittstelle, wissen nicht, dass die Migration stattfindet, bis Sie das Legacysystem vollständig ersetzen.
Unterstützende Muster
Die Interservice-Kommunikation beschreibt die Retry - und Circuit Breaker-Muster für widerstandsfähige Dienst-zu-Dienst-Aufrufe.
Den vollständigen Katalog der Clouddesignmuster im Azure Architecture Center finden Sie unter Clouddesignmuster.
Nächste Schritte
- Schulung: Erstellen Ihres ersten Microservice mithilfe von .NET
- Was sind Microservices?
- Microservices-Architektur