Cloudentwurfsmuster, die Zuverlässigkeit unterstützen

Wenn Sie Workloadarchitekturen entwerfen, sollten Sie Branchenmuster verwenden, die häufig auftretende Herausforderungen bewältigen. Muster können Ihnen dabei helfen, absichtliche Kompromisse innerhalb von Workloads zu treffen und für Ihr gewünschtes Ergebnis zu optimieren. Sie können auch dazu beitragen, Risiken zu minimieren, die sich aus bestimmten Problemen ergeben, die sich auf Sicherheit, Leistung, Kosten und Vorgänge auswirken können. Wenn sie nicht entschärft werden, führen diese Risiken schließlich zu Zuverlässigkeitsproblemen. Diese Muster basieren auf realen Erfahrungen, sind für Cloud-Skalierungs- und Betriebsmodelle konzipiert und sind von Natur aus anbieterunabhängig. Die Verwendung bekannter Muster als Möglichkeit zur Standardisierung Ihres Workloadentwurfs ist eine Komponente der optimalen Betriebsabläufe.

Viele Entwurfsmuster unterstützen direkt eine oder mehrere Architekturpfeiler. Entwurfsmuster, die die Säule Zuverlässigkeit unterstützen, priorisieren Workloadverfügbarkeit, Selbsterhaltung, Wiederherstellung, Daten- und Verarbeitungsintegrität und Eindämmung von Fehlfunktionen.

Entwurfsmuster für Zuverlässigkeit

In der folgenden Tabelle sind Cloudentwurfsmuster zusammengefasst, die die Zuverlässigkeitsziele unterstützen.

Muster Zusammenfassung
Ambassador Kapselt und verwaltet die Netzwerkkommunikation, indem querschnittsübergreifende Aufgaben im Zusammenhang mit der Netzwerkkommunikation ausgelagert werden. Die resultierenden Hilfsdienste initiieren die Kommunikation im Namen des Clients. Dieser Vermittlungspunkt bietet die Möglichkeit, Zuverlässigkeitsmuster zur Netzwerkkommunikation hinzuzufügen, z. B. Wiederholungsversuche oder Pufferung.
Back-Ends für Front-Ends Individualisiert die Dienstebene einer Workload, indem separate Dienste erstellt werden, die exklusiv für eine bestimmte Front-End-Schnittstelle sind. Aufgrund dieser Trennung wirkt sich eine Fehlfunktion in der Dienstebene, die einen Client unterstützt, möglicherweise nicht auf die Verfügbarkeit des Zugriffs eines anderen Clients aus. Wenn Sie verschiedene Clients unterschiedlich behandeln, können Sie Zuverlässigkeitsbemühungen basierend auf den erwarteten Clientzugriffsmustern priorisieren.
Bulkhead Führt eine beabsichtigte und vollständige Segmentierung zwischen Komponenten ein, um den Strahlradius von Fehlfunktionen zu isolieren. Diese Strategie für die Fehlerisolation versucht, Fehler nur für den Bulkhead einzudämmen, bei dem das Problem auftritt, wodurch Auswirkungen auf andere Bulkheads vermieden werden.
Cache-Aside Optimiert den Zugriff auf häufiges Lesen von Daten, indem ein Cache eingeführt wird, der bei Bedarf aufgefüllt wird. Der Cache wird dann für nachfolgende Anforderungen für die gleichen Daten verwendet. Zwischenspeichern führt zu einer Datenreplikation und kann auf begrenzte Weise verwendet werden, um die Verfügbarkeit von daten, auf die häufig zugegriffen wird, beizubehalten, wenn der Ursprungsdatenspeicher vorübergehend nicht verfügbar ist. Darüber hinaus kann die Workload bei einer Fehlfunktion im Cache auf den Ursprungsdatenspeicher zurückgreifen.
Sicherung Verhindert kontinuierliche Anforderungen an eine fehlerhafte oder nicht verfügbare Abhängigkeit. Dadurch verhindert dieses Muster, dass eine fehlerhafte Abhängigkeit überladen wird. Sie können dieses Muster auch verwenden, um eine ordnungsgemäße Beeinträchtigung der Workload auszulösen. Trennschalter werden häufig mit automatischer Wiederherstellung gekoppelt, um sowohl selbsterhaltung als auch Selbstreparatur zu ermöglichen.
Anspruchsprüfung Trennt Daten vom Nachrichtenfluss und bietet eine Möglichkeit, die daten im Zusammenhang mit einer Nachricht separat abzurufen. Nachrichtenbusse bieten nicht die gleiche Zuverlässigkeit und Notfallwiederherstellung wie in dedizierten Datenspeichern, sodass die Trennung der Daten von der Nachricht eine höhere Zuverlässigkeit für die zugrunde liegenden Daten bieten kann. Diese Trennung ermöglicht auch einen Wiederherstellungsansatz für Nachrichtenwarteschlangen nach einem Notfall.
Ausgleichende Transaktion Stellt einen Mechanismus zur Wiederherstellung nach Fehlern bereit, indem die Auswirkungen zuvor angewendeter Aktionen rückgängig werden. Dieses Muster behebt Fehlfunktionen in kritischen Workloadpfaden mithilfe von Kompensationsaktionen, die Prozesse wie das direkte Rollback von Datenänderungen, das Unterbrechen von Transaktionssperren oder sogar das Ausführen des systemeigenen Systemverhaltens umfassen können, um den Effekt umzukehren.
Konkurrierende Consumer Wendet verteilte und gleichzeitige Verarbeitung an, um Elemente in einer Warteschlange effizient zu verarbeiten. Dieses Modell erstellt Redundanz bei der Warteschlangenverarbeitung, indem Consumer als Replikate behandelt werden, sodass ein instance Fehler andere Consumer nicht daran hindert, Warteschlangennachrichten zu verarbeiten.
Ereignisherkunftsermittlung Behandelt Zustandsänderungen als Eine Reihe von Ereignissen und erfasst sie in einem unveränderlichen, nur anfügebaren Protokoll. Sie können dieses Muster verwenden, wenn ein zuverlässiger Verlauf von Änderungen in einem komplexen Geschäftsprozess von entscheidender Bedeutung ist. Es erleichtert auch die Zustandsrekonstruktion, wenn Sie Zustandsspeicher wiederherstellen müssen.
Verbundidentität Delegiert die Vertrauensstellung an einen Identitätsanbieter, der sich außerhalb der Workload befindet, um Benutzer zu verwalten und die Authentifizierung für Ihre Anwendung bereitzustellen. Das Auslagern der Benutzerverwaltung und Authentifizierung verschiebt die Zuverlässigkeit für diese Komponenten auf den Identitätsanbieter, der in der Regel eine hohe SLA aufweist. Darüber hinaus müssen Authentifizierungskomponenten während der Notfallwiederherstellung von Workloads wahrscheinlich nicht im Rahmen des Workloadwiederherstellungsplans behandelt werden.
Gatewayaggregation Vereinfacht Clientinteraktionen mit Ihrer Workload, indem Aufrufe mehrerer Back-End-Dienste in einer einzelnen Anforderung aggregiert werden. Mit dieser Topologie können Sie die Behandlung vorübergehender Fehler von einer clientübergreifenden verteilten Implementierung zu einer zentralisierten Implementierung verschieben.
Gatewayabladung Die Anforderungsverarbeitung wird vor und nach der Weiterleitung der Anforderung an einen Back-End-Knoten auf ein Gatewaygerät ausgelagert. Das Auslagern dieser Verantwortung an ein Gateway reduziert die Komplexität des Anwendungscodes auf Back-End-Knoten. In einigen Fällen ersetzt das Auslagern die Funktionalität vollständig durch ein zuverlässiges plattformbasiertes Feature.
Gatewayrouting Leitet eingehende Netzwerkanforderungen basierend auf Anforderungsabsichten, Geschäftslogik und Back-End-Verfügbarkeit an verschiedene Back-End-Systeme weiter. Gatewayrouting ermöglicht es Ihnen, Datenverkehr nur an fehlerfreie Knoten in Ihrem System weiterzuleiten.
Geografischer Knoten Stellt Systeme bereit, die in Aktiv/Aktiv-Verfügbarkeitsmodi in mehreren geografischen Regionen ausgeführt werden. Bei diesem Muster wird die Datenreplikation verwendet, um das Ideale zu unterstützen, dass jeder Client eine Verbindung mit einem beliebigen geografischen instance herstellen kann. Sie kann Ihre Workload dabei unterstützen, einem oder mehreren regionalen Ausfällen standzuhalten.
Überwachung des Integritätsendpunkts Bietet eine Möglichkeit, die Integrität oder status eines Systems zu überwachen, indem ein Endpunkt verfügbar gemacht wird, der speziell für diesen Zweck entwickelt wurde. Sie können diesen Endpunkt zum Verwalten der Integrität Ihrer Workload sowie für Warnungen und Dashboarding verwenden. Sie können es auch als Signal für die Selbstheilung verwenden.
Indextabelle Optimiert den Datenabruf in verteilten Datenspeichern, indem Clients Metadaten nachschlagen können, sodass Daten direkt abgerufen werden können, sodass keine vollständigen Datenspeicherscans erforderlich sind. Da Clients über einen Nachschlageprozess auf ihren Shard, ihre Partition oder ihren Endpunkt verweisen, können Sie dieses Muster verwenden, um einen Failoveransatz für den Datenzugriff zu vereinfachen.
Auswahl einer übergeordneten Instanz Erstellt einen Leader für Instanzen einer verteilten Anwendung. Der Leiter koordiniert Zuständigkeiten, die sich auf die Erreichung eines Ziels beziehen. Dieses Muster mindert die Auswirkungen von Knotenfehlern, indem arbeit zuverlässig umgeleitet wird. Außerdem wird ein Failover über Konsensalgorithmen implementiert, wenn ein Leader nicht funktioniert.
Pipes und Filter Unterteilt komplexe Datenverarbeitung in eine Reihe unabhängiger Phasen, um ein bestimmtes Ergebnis zu erzielen. Die einzelne Verantwortung jeder Phase ermöglicht fokussierte Aufmerksamkeit und vermeidet die Ablenkung der datenbezogenen Verarbeitung.
Prioritätswarteschlange Stellt sicher, dass Elemente mit höherer Priorität vor Elementen mit niedrigerer Priorität verarbeitet und abgeschlossen werden. Das Trennen von Elementen basierend auf der Geschäftspriorität ermöglicht es Ihnen, die Zuverlässigkeitsbemühungen auf die kritischste Arbeit zu konzentrieren.
Herausgeber/Abonnent Entkoppelt Komponenten einer Architektur, indem die direkte Client-zu-Dienst- oder Client-zu-Dienst-Kommunikation durch die Kommunikation über einen zwischengeschalteten Nachrichtenbroker oder Ereignisbus ersetzt wird.
Warteschlangenbasierter Lastenausgleich Steuert die Ebene der eingehenden Anforderungen oder Aufgaben, indem sie in einer Warteschlange gepuffert und vom Warteschlangenprozessor in einem kontrollierten Tempo verarbeitet werden. Dieser Ansatz kann Resilienz gegen plötzliche Nachfragespitzen bieten, indem die Ankunft von Aufgaben von ihrer Verarbeitung entkoppelt wird. Es kann auch Fehlfunktionen bei der Warteschlangenverarbeitung isolieren, sodass sie sich nicht auf die Aufnahme auswirken.
Ratenbegrenzung Steuert die Rate von Clientanforderungen, um Drosselungsfehler zu reduzieren und ungebundene Wiederholungsszenarien zu vermeiden. Diese Taktik schützt den Client, indem die Einschränkungen und Kosten der Kommunikation mit einem Dienst anerkannt werden, wenn der Dienst so konzipiert ist, dass keine bestimmten Grenzwerte erreicht werden. Sie steuert die Anzahl und/oder Größe der Vorgänge, die während eines bestimmten Zeitraums an den Dienst gesendet werden.
Wiederholung Behebt Fehler, die vorübergehend oder zeitweilig auftreten können, indem bestimmte Vorgänge kontrolliert wiederholt werden. Das Beheben vorübergehender Fehler in einem verteilten System ist eine wichtige Methode zur Verbesserung der Resilienz einer Workload.
Verteilte Saga-Transaktionen Koordiniert lang andauernde und potenziell komplexe Transaktionen, indem die Arbeit in Sequenzen kleinerer, unabhängiger Transaktionen zerlegt wird. Jede Transaktion muss außerdem über kompensierende Aktionen verfügen, um Fehler bei der Ausführung rückgängig zu machen und die Integrität aufrechtzuerhalten. Da monolithische Transaktionen über mehrere verteilte Systeme hinweg in der Regel unmöglich sind, sorgt dieses Muster für Konsistenz und Zuverlässigkeit, indem Atomarität und Kompensation implementiert werden.
Scheduler-Agent-Supervisor Verteilt Aufgaben effizient auf ein System basierend auf Faktoren, die im System beobachtbar sind, und verteilt sie neu. Dieses Muster verwendet Integritätsmetriken, um Fehler zu erkennen und Aufgaben an einen fehlerfreien Agent umzuleiten, um die Auswirkungen einer Fehlfunktion zu minimieren.
Sequenzieller Konvoi Verwaltet gleichzeitige Eingehende Nachrichten und unterstützt gleichzeitig die Verarbeitung in einer definierten Reihenfolge. Dieses Muster kann Racebedingungen beseitigen, die schwer zu beheben sind, umstrittene Nachrichtenbehandlung oder andere Problemumgehungen für die Adressierung falsch sortierter Nachrichten, die zu Fehlfunktionen führen können.
Sharding Leitet die Last an ein bestimmtes logisches Ziel weiter, um die spezifische Anforderung zu verarbeiten, und ermöglicht die Colocation zur Optimierung. Da die Daten oder die Verarbeitung mit dem Shard isoliert sind, bleibt eine Fehlfunktion in einem Shard in diesem Shard isoliert.
Strangler-Muster Bietet einen Ansatz zum systematischen Ersetzen der Komponenten eines ausgeführten Systems durch neue Komponenten, häufig während einer Migration oder Modernisierung des Systems. Der inkrementelle Ansatz dieses Musters kann dazu beitragen, Risiken während eines Übergangs zu minimieren.
Drosselung Erzwingt Grenzwerte für die Rate oder den Durchsatz eingehender Anforderungen an eine Ressource oder Komponente. Sie können die Grenzwerte so entwerfen, dass Ressourcenauslastungen vermieden werden, die zu Fehlfunktionen führen können. Sie können dieses Muster auch als Steuerungsmechanismus in einem ordnungsgemäßen Abbauplan verwenden.

Nächste Schritte

Sehen Sie sich die Cloudentwurfsmuster an, die die anderen Azure Well-Architected Framework-Säulen unterstützen: