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.
Wenn Sie Arbeitsauslastungsarchitekturen entwerfen, sollten Sie Branchenmuster verwenden, die häufig auftretende Herausforderungen bewältigen. Muster können Ihnen 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 mindern, die aus bestimmten Problemen stammen, was sich auf Zuverlässigkeit, Sicherheit, Kosten und Vorgänge auswirken kann. Wenn sie nicht abgemildert werden, führen risiken letztendlich zu Leistungsineffizienzen. Diese Muster werden von realen Erfahrungen unterstützt, sind für Cloud-Skalierungs- und Betriebsmodelle konzipiert und sind inhärent anbieterunabhängig. Die Verwendung bekannter Muster als Möglichkeit zum Standardisieren Ihres Workloaddesigns ist eine Komponente der betrieblichen Exzellenz.
Viele Entwurfsmuster unterstützen direkt eine oder mehrere Architekturpfeiler. Designmuster, die die Säule Performance Efficiency unterstützen, adressiert Skalierbarkeit, Leistungsoptimierung, Aufgabenpriorisierung und Die Entfernung von Engpässen.
In der folgenden Tabelle sind Architekturentwurfsmuster zusammengefasst, die die Ziele der Leistungseffizienz unterstützen.
| Muster | Zusammenfassung |
|---|---|
| Asynchrone Anforderungsantwort | Verbessert die Reaktionsfähigkeit und Skalierbarkeit von Systemen, indem die Anforderungs- und Antwortphasen von Interaktionen für Prozesse entkoppelt werden, die keine sofortigen Antworten benötigen. Mithilfe eines asynchronen Musters können Sie die Parallelität auf der Serverseite maximieren. Sie können dieses Muster verwenden, um zu planen, dass die Arbeit abgeschlossen wird, da die Kapazität zulässt. |
| Back-Ends für Frontends | Individualisiert die Dienstebene einer Workload, indem separate Dienste erstellt werden, die exklusiv für eine bestimmte Frontend-Schnittstelle sind. Diese Trennung ermöglicht es Ihnen, auf Arten zu optimieren, die möglicherweise nicht mit einer Ebene für gemeinsame Dienste möglich sind. Wenn Sie einzelne Clients unterschiedlich behandeln, können Sie die Leistung für die Einschränkungen und Funktionen eines bestimmten Clients optimieren. |
| Schott | Führt die Segmentierung zwischen Komponenten ein, um den Strahlradius von Fehlfunktionen zu isolieren. Dieses Design ermöglicht es jedem Bulkhead, individuell skalierbar zu sein, um die Anforderungen des Vorgangs zu erfüllen, der in den Bulkhead gekapselt ist. |
| Zwischenspeichern | Optimiert den Zugriff auf häufig gelesene Daten, indem ein Cache eingeführt wird, der bei Bedarf aufgefüllt wird. Der Cache wird dann für nachfolgende Anforderungen für dieselben Daten verwendet. Dieses Muster ist besonders nützlich bei leseintensiven Daten, die sich nicht oft ändern und eine bestimmte Menge an Veraltetkeit tolerieren können. Ziel dieser Implementierung ist es, eine bessere Leistung im System insgesamt zu bieten, indem diese Art von Daten in einen Cache ausgelagert wird, anstatt sie aus dem Datenspeicher zu beziehen. |
| Choreographie | Koordiniert das Verhalten autonomer verteilter Komponenten in einer Workload mithilfe dezentraler, ereignisgesteuerter Kommunikation. Dieses Muster kann eine Alternative bereitstellen, wenn Leistungsengpässe in einer zentralen Orchestrierungstopologie auftreten. |
| Sicherungsautomat | Verhindert kontinuierliche Anforderungen an eine fehlerhafte oder nicht verfügbare Abhängigkeit. Ein Retry-on-Error-Ansatz kann zu einer übermäßigen Ressourcenauslastung während der Abhängigkeitswiederherstellung führen und die Leistung auch für eine Abhängigkeit überlasten, die die Wiederherstellung versucht. |
| Anspruchsprüfung | Trennt Daten vom Nachrichtenfluss, wodurch eine Möglichkeit zum getrennten Abrufen der Daten im Zusammenhang mit einer Nachricht bereitgestellt wird. Dieses Muster verbessert die Effizienz und Leistung von Nachrichtenverlegern, Abonnenten und dem Nachrichtenbus selbst, wenn das System große Datennutzlasten verarbeitet. Es funktioniert, indem die Größe von Nachrichten verringert und sichergestellt wird, dass Verbraucher Nutzlastdaten nur bei Bedarf und zu einem opportune-Zeitpunkt abrufen. |
| Konkurrierende Consumer | Wendet verteilte und gleichzeitige Verarbeitung an, um Elemente in einer Warteschlange effizient zu verarbeiten. Dieses Modell unterstützt die Verteilung der Last über alle Consumerknoten und die dynamische Skalierung, die auf der Warteschlangentiefe basiert. |
| Computeressourcenkonsolidierung | Optimiert und konsolidiert Rechenressourcen durch erhöhung der Dichte. Dieses Muster kombiniert mehrere Anwendungen oder Komponenten einer Workload in einer freigegebenen Infrastruktur. Diese Konsolidierung maximiert die Auslastung von Computerressourcen, indem ersatzkapazität für Knoten verwendet wird, um die Überteilung zu reduzieren. Container-Orchestratoren sind ein gängiges Beispiel. Große (vertikal skalierte) Computeinstanzen werden häufig im Ressourcenpool für diese Infrastrukturen verwendet. |
| Befehls- und Abfrageverantwortungstrennung (Command and Query Responsibility Segregation, CQRS) | Trennt die Lese- und Schreibvorgänge des Datenmodells einer Anwendung. Diese Trennung ermöglicht gezielte Leistungs- und Skalierungsoptimierungen für den jeweiligen Zweck jedes Vorgangs. Dieses Design ist in Anwendungen mit einem hohen Lese-zu-Schreib-Verhältnis am hilfreichsten. |
| Bereitstellungsstempel | Bietet einen Ansatz zum Freigeben einer bestimmten Version einer Anwendung und ihrer Infrastruktur als kontrollierte Bereitstellungseinheit, basierend auf der Annahme, dass die gleichen oder verschiedene Versionen gleichzeitig bereitgestellt werden. Dieses Muster richtet sich häufig an den definierten Skalierungseinheiten in Ihrer Workload: Da zusätzliche Kapazität erforderlich ist, die eine einzelne Skalierungseinheit bereitstellt, wird ein zusätzlicher Bereitstellungsstempel für die Skalierung bereitgestellt. |
| Event Sourcing | Behandelt Zustandsänderungen als Ereignisreihe und erfasst sie in einem unveränderlichen, nur anfügebaren Protokoll. Je nach Workload kann dieses Muster in Kombination mit CQRS, einem geeigneten Domänendesign und einer strategischen Momentaufnahme die Leistung verbessern. Leistungsverbesserungen sind auf die atomaren Anfügevorgänge und die Vermeidung der Datenbanksperre für Schreib- und Lesevorgänge zurückzuführen. |
| Verbundidentität | Delegiert die Vertrauensstellung an einen Identitätsanbieter, der sich außerhalb der Arbeitslast für die Verwaltung von Benutzern befindet und die Authentifizierung für Ihre Anwendung bereitstellt. Wenn Sie die Benutzerverwaltung und Authentifizierung auslagern, können Sie Anwendungsressourcen anderen Prioritäten zuordnen. |
| Pförtner | Entlastet die Anforderungsverarbeitung, die speziell für die Durchsetzung der Sicherheits- und Zugriffssteuerung vor und nach der Weiterleitung der Anforderung an einen Back-End-Knoten bestimmt ist. Dieses Muster wird häufig verwendet, um Drosselung auf Gatewayebene zu implementieren, anstatt Rateprüfungen auf Knotenebene zu implementieren. Die Koordination des Ratezustands zwischen allen Knoten ist nicht inhärent. |
| Gatewayaggregation | Vereinfacht Clientinteraktionen mit Ihrer Workload, indem Aufrufe an mehrere Back-End-Dienste in einer einzigen Anforderung aggregiert werden. Dieser Entwurf kann weniger Latenz verursachen als ein Entwurf, in dem der Client mehrere Verbindungen herstellt. Das Zwischenspeichern ist auch bei Aggregationsimplementierungen üblich, da sie Aufrufe an Back-End-Systeme minimiert. |
| Gatewayabladung | Lädt die Anforderungsverarbeitung vor und nach der Weiterleitung der Anforderung an einen Back-End-Knoten an ein Gatewaygerät aus. Durch das Hinzufügen eines Offloadgateways zum Anforderungsprozess können Sie weniger Ressourcen pro Knoten verwenden, da die Funktionalität am Gateway zentralisiert ist. Sie können die Implementierung der entladenen Funktionalität unabhängig vom Anwendungscode optimieren. Offloaded platform-provided functionality is already be highly performant. |
| Gatewayrouting | Leitet eingehende Netzwerkanforderungen an verschiedene Back-End-Systeme basierend auf Anforderungsabsichten, Geschäftslogik und Back-End-Verfügbarkeit weiter. Das Gatewayrouting ermöglicht es Ihnen, datenverkehrsübergreifend über Knoten in Ihrem System zu verteilen, um lastenausgleichen zu können. |
| Druse | Stellt Systeme bereit, die in aktiv aktiven Verfügbarkeitsmodi in mehreren Regionen arbeiten. Dieses Muster verwendet die Datenreplikation, um den Idealfall zu unterstützen, den jeder Client mit einer beliebigen geografischen Instanz herstellen kann. Sie können sie verwenden, um Ihre Anwendung aus einer Region zu bedienen, die Ihrer verteilten Benutzerbasis am nächsten kommt. Dadurch wird die Latenz reduziert, indem der Fernverkehr eliminiert wird und Sie nur die Infrastruktur für Benutzer freigeben, die derzeit dieselbe Geode verwenden. |
| Integritätsendpunktüberwachung | Bietet eine Möglichkeit, die Integrität oder den Status eines Systems zu überwachen, indem ein Endpunkt verfügbar ist, der speziell für diesen Zweck entwickelt wurde. Sie können diese Endpunkte verwenden, um den Lastenausgleich zu verbessern, indem Sie datenverkehr nur an Knoten weiterleiten, die als fehlerfrei überprüft werden. Mit zusätzlicher Konfiguration können Sie auch Metriken zur verfügbaren Knotenkapazität abrufen. |
| Indextabelle | Optimiert das Abrufen von Daten in verteilten Datenspeichern, indem Clients das Nachschlagen von Metadaten ermöglichen, sodass Daten direkt abgerufen werden können, ohne dass vollständige Datenspeicherüberprüfungen ausgeführt werden müssen. Clients verweisen auf ihre Shard-, Partitions- oder Endpunkte, die die dynamische Datenpartitionierung zur Leistungsoptimierung ermöglichen können. |
| Materialisierte Ansicht | Verwendet vorkompilierte Ansichten von Daten, um den Datenempfang zu optimieren. Die materialisierten Ansichten speichern die Ergebnisse komplexer Berechnungen oder Abfragen, ohne dass das Datenbankmodul oder der Client für jede Anforderung neu kompensiert werden muss. Dieser Entwurf reduziert den gesamtressourcenverbrauch. |
| Prioritätswarteschlange | Stellt sicher, dass Elemente mit höherer Priorität verarbeitet und vor Elementen mit niedrigerer Priorität abgeschlossen werden. Durch das Trennen von Elementen basierend auf der Geschäftlichen Priorität können Sie sich auf die Leistungsbemühungen auf die zeitkritische Arbeit konzentrieren. |
| Herausgeber/Abonnent | Entkoppelt Komponenten einer Architektur, indem die direkte Client-zu-Service- oder Client-zu-Dienst-Kommunikation mit der Kommunikation über einen Zwischennachrichtenbroker oder Ereignisbus ersetzt wird. Die Entkoppelung von Herausgebern von Verbrauchern ermöglicht es Ihnen, die Berechnung und den Code speziell für die Aufgabe zu optimieren, die der Verbraucher für die spezifische Nachricht ausführen muss. |
| Warteschlangenbasierter Lastenausgleich | Steuert die Ebene eingehender Anforderungen oder Aufgaben, indem sie in einer Warteschlange gepuffert und der Warteschlangenprozessor sie in einem kontrollierten Tempo verarbeiten lässt. Dieser Ansatz ermöglicht die beabsichtigte Gestaltung der Durchsatzleistung, da die Aufnahme von Anforderungen nicht mit der Rate korreliert werden muss, in der sie verarbeitet werden. |
| Planer-Agent-Supervisor | Verteilt Aufgaben effizient und verteilt sie über ein System basierend auf Faktoren, die im System feststellbar sind. Dieses Muster verwendet Leistungs- und Kapazitätsmetriken, um aktuelle Auslastung zu erkennen und Aufgaben an einen Agent zu leiten, der über Kapazität verfügt. Sie können sie auch verwenden, um die Ausführung von Arbeit mit höherer Priorität über die Arbeit mit niedrigerer Priorität zu priorisieren. |
| Sharding | Lenkt die Last zu einem bestimmten logischen Ziel, um eine bestimmte Anfrage zu bearbeiten, wodurch eine Zusammenlegung zur Optimierung ermöglicht wird. Wenn Sie Sharding in Ihrer Skalierungsstrategie verwenden, sind die Daten oder die Verarbeitung auf einen Shard isoliert, sodass sie nur für Ressourcen mit anderen Anforderungen konkurrieren, die an diesen Shard weitergeleitet werden. Sie können auch Sharding verwenden, um basierend auf der Geografie zu optimieren. |
| Beiwagen | Erweitert die Funktionalität einer Anwendung durch Kapselung nicht primärer oder querschneidender Aufgaben in einem Begleitprozess, der neben der Hauptanwendung vorhanden ist. Sie können schneidende Aufgaben in einen einzelnen Prozess verschieben, der über mehrere Instanzen des Hauptprozesses skaliert werden kann, wodurch die Notwendigkeit reduziert wird, doppelte Funktionen für jede Instanz der Anwendung bereitzustellen. |
| Hosten von statischen Inhalten | Optimiert die Bereitstellung statischer Inhalte an Clients mithilfe einer Hostingplattform, die für diesen Zweck entwickelt wurde. Das Auslagern der Verantwortung auf einen externen Host trägt dazu bei, die Überlastung zu verringern und ermöglicht es Ihnen, Ihre Anwendungsplattform nur für die Bereitstellung der Geschäftslogik zu verwenden. |
| Drosselung | Legt Grenzwerte für die Rate oder den Durchsatz eingehender Anforderungen an eine Ressource oder Komponente fest. Wenn das System unter hoher Nachfrage liegt, hilft dieses Muster, Staus zu mindern, die zu Leistungsengpässen führen können. Sie können es auch verwenden, um laute Nachbarszenarien proaktiv zu vermeiden. |
| Valet-Schlüssel | Gewährt sicherheitsbeschränkten Zugriff auf eine Ressource, ohne eine zwischengeschaltete Ressource zum Proxyn des Zugriffs zu verwenden. Dadurch wird die Verarbeitung als exklusive Beziehung zwischen dem Client und der Ressource entladen, ohne dass eine Botschafterkomponente erforderlich ist, die alle Clientanforderungen auf performante Weise verarbeiten muss. Der Vorteil der Verwendung dieses Musters ist am wichtigsten, wenn der Proxy der Transaktion keinen Wert hinzugibt. |
Nächste Schritte
Überprüfen Sie die Architekturentwurfsmuster, die die anderen Azure Well-Architected Framework-Säulen unterstützen: