Freigeben über


Architekturstrategien zur Priorisierung der Leistung kritischer Abläufe

Gilt für diese Checkliste für azure Well-Architected Framework Performance Efficiency:

PE:09 Priorisieren Sie die Leistung kritischer Flüsse. Die Zuordnung von Arbeitsauslastungsressourcen und Leistungsoptimierungsbemühungen sollte die Abläufe priorisieren, die die wichtigsten Geschäftsprozesse, Benutzer und Vorgänge unterstützen.

In diesem Leitfaden werden die Empfehlungen zum Priorisieren der Leistung kritischer Flüsse in einer Workload beschrieben. Kritische Abläufe stellen wichtige Geschäftsprozesse dar, die Umsatz generieren oder Vorgänge mit hoher Priorität fördern. Wenn Sie die Leistung kritischer Flüsse priorisieren, stellen Sie sicher, dass die Flüsse, die die meisten Auswirkungen haben, die Ressourcen erhalten, die sie benötigen, bevor sie mit niedrigerer Priorität fließen. Wenn diese Priorisierung nicht ausgeführt wird, kann dies unverhältnismäßig negative Auswirkungen auf Arbeitsauslastungsprioritäten und die Benutzererfahrung haben.

Definitionen

Begriff Definition
Flow In einer Arbeitsauslastung wird die Abfolge von Aktionen ausgeführt, die eine bestimmte Funktion ausführen. Ein Fluss umfasst die Verschiebung von Daten und die Ausführung von Prozessen zwischen Komponenten der Arbeitsauslastung.
Verarbeitung von Prioritätswarteschlangen Der Vorgang der Verarbeitung von Vorgängen mit hoher Priorität vor Vorgängen mit niedriger Priorität.
Ratenbegrenzung Der Akt der Einschränkung, wie viele Anforderungen auf eine Ressource zugreifen können.
Systemfluss Der Informations- und Prozessfluss innerhalb eines Systems. Das System folgt diesem Fluss automatisch, um Benutzerabläufe oder Workloadfunktionen zu ermöglichen.
Benutzerflow Die Sequenz, die ein Benutzer zum Ausführen einer Aufgabe folgt.

Kritische Flüsse beziehen sich auf die wichtigsten Benutzerflüsse für Kunden oder das System und die Datenflüsse für Vorgänge, die für die Workloadfunktionalität von entscheidender Bedeutung sind. Diese Flüsse können Aktionen wie Benutzerregistrierungen, Anmeldungen, Produktkäufe, Zugriff auf Seiten hinter einer Paywall oder einen anderen wichtigen Pfad oder Prozess innerhalb Ihrer Workload umfassen.

Kritische Abläufe wirken sich erheblich auf die Benutzererfahrung oder Geschäftsvorgänge aus. Kritische Flüsse haben höhere Leistungsziele und Vereinbarungen auf Serviceebene als nicht kritische Flüsse. Wenn Ressourcen begrenzt sind, sollten nicht kritische Flüsse die Ressourcennutzung für kritische Flüsse liefern. Sie müssen alle Flüsse identifizieren, überwachen und priorisieren, bevor Sie kritische Flüsse isolieren und optimieren.

Identifizieren aller Flüsse

Der erste Schritt bei der Priorisierung der Leistung kritischer Flüsse besteht darin, alle Flüsse in Ihrer Workload zu identifizieren. Die Flussidentifikation umfasst eine systematische Zuordnung und das Verständnis aller Benutzerpfade und Komponentenkommunikation. Der Fokus liegt auf dem Verständnis der Leistungsmetriken und potenziellen Auswirkungen von Flüssen auf die Arbeitsauslastungsleistung.

Indem Sie die Arbeitsauslastung in diskrete Flüsse zersplizieren, können Sie Leistungsengpässe, ineffiziente Ressourcenauslastung und Möglichkeiten für die Leistungsoptimierung finden. Dieses Wissen macht Bereiche der erforderlichen Verbesserung verfügbar und ist der erste Schritt zur Identifizierung kritischer Flüsse. Weitere Informationen finden Sie unter Identifizieren und Bewerten von Benutzer- und Systemflüssen.

Überwachen von Flussleistungsmetriken

Nachdem Sie alle Flüsse innerhalb Ihrer Workload identifiziert haben, müssen Sie Leistungsmetriken für jeden Fluss sammeln und diese Metriken überwachen. Flussmetriken bieten Einblicke in Reaktionszeiten, Fehlerraten und Durchsatz. Ziel ist es, leistungsbezogene Metriken konsistent zu beobachten und aufzuzeichnen, um Ihr Verständnis der Auswirkungen jedes Flusses auf die Arbeitsauslastungsleistung weiter zu verfeinern. Zum Überwachen von Flussmetriken können Sie die folgenden Tools zum Sammeln von Daten verwenden:

  • Analyse- und Nachverfolgungstools: Diese Tools bieten Einblicke in das Benutzerverhalten und Interaktionen innerhalb Ihrer Anwendung. Durch die Analyse von Benutzerdaten können Sie die am häufigsten verwendeten Flüsse, Engpässe oder potenziellen Probleme identifizieren.

  • Tools zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM): Verwenden Sie APM-Tools, um die Leistung Ihrer Anwendung zu überwachen und die Ausführung von Flüssen nachzuverfolgen. Diese Tools bieten Einblicke in Reaktionszeiten, Fehler und andere Leistungsmetriken, sodass Sie kritische Flüsse identifizieren und ihre Leistung optimieren können.

  • Protokollierungs- und Debuggingtools: Verwenden Sie diese Tools, um Protokolle zu erfassen und zu analysieren und Informationen zu debuggen, während Ihre Anwendung ausgeführt wird. Überprüfen Sie Protokolle und Debugginginformationen, um zu verfolgen, wie Flüsse ausgeführt werden, und identifizieren Sie Probleme oder Fehler.

Identifizieren kritischer Flüsse

Mit den verfügbaren Leistungsdaten können Sie beginnen, alle Flüsse zu bewerten und die kritischen Flüsse zu identifizieren. Die Identifizierung kritischer Flüsse umfasst die Bewertung der Leistungsauswirkungen und der Kritischen Leistung jedes Flusses. Durch effektive Flusspriorisierung wird sichergestellt, dass die wichtigsten Flüsse die benötigten Ressourcen erhalten, bevor weniger kritische Abläufe erforderlich sind. Beachten Sie die folgenden Schritte, um Abläufe in Ihrer Anwendung zu priorisieren:

  • Identifizieren Sie geschäftliche Auswirkungen: Beginnen Sie, indem Sie die Wichtigkeit der einzelnen Abläufe in Ihren Vorgängen bewerten. Konzentrieren Sie sich auf die Ausrichtung jedes Flusses an Ihre Geschäftsziele, ihre Auswirkungen auf die Benutzer und die potenziellen negativen Auswirkungen einer schlechten Leistung. Während beispielsweise eine kostenlose Serviceebene mehr Benutzer anlockt, könnte eine kostenpflichtige Stufe für Ihre Geschäftsziele wichtiger sein.

    Berücksichtigen Sie darüber hinaus die Auswirkungen auf die Leistung eines Flusses über einen oder mehrere Geschäftsprozesse. Mehrere Flüsse unterstützen möglicherweise einen einzelnen Geschäftsprozess, aber häufig wirkt sich ein Fluss erheblich auf die Leistung dieses Prozesses aus. Sie möchten die Flüsse identifizieren, die sich am stärksten auf die Leistung auswirken. Umgekehrt kann ein einzelner Fluss mehrere Prozesse untermauern. In solchen Fällen beeinflusst die Leistung dieses Flusses direkt die Wirksamkeit aller zugehörigen Prozesse, und es ist wahrscheinlich ein kritischer Fluss.

  • Analysieren Sie Leistungsdaten: Analysieren Sie die Leistungsmetriken, die den einzelnen Flussen zugeordnet sind. Suchen Sie nach Mustern, Anomalien oder herausragenden Metriken, die Einblicke in die Effizienz und Wichtigkeit des Flusses bieten können. Beispielsweise sind Systemflüsse mit erheblicher Nutzung wahrscheinlich wichtige Flüsse.

  • Zuweisen einer Bewertung der Kritischität: Basierend auf den Geschäftswirkungen und Leistungsindikatoren sollten Sie die Flüsse priorisieren. Verwenden Sie Kritische Bewertungen von "Hoch", " Mittel" und "Niedrig". Flüsse mit erheblichen geschäftlichen Auswirkungen oder einer hohen Leistungsnachfrage sollten eine Bewertung der Kritischen Qualität "Hoch" erhalten. Diese Flüsse sind Ihre kritischen Flüsse. Konzentrieren Sie sich auf Abläufe mit hohem Benutzerdatenverkehr oder wirken sich direkt auf die Umsatzgenerierung aus. Die folgende Tabelle enthält Merkmale kritischer (Hoch) und nicht kritischer Flüsse (Mittel bis Niedrig).

Kritische Flüsse Nicht kritische Flüsse
Hohe Nutzung Geringe Nutzung
Unternehmenskritisch Nicht geschäftskritisch
Teure Vorgänge Kleine Vorgänge
Zeitsensitiv Nicht zeitempfindlich
Produktion Vorproduktion
Echtzeitverarbeitung Batchverarbeitung
Latenz vertraulich Keine Latenz vertraulich
Bezahlende Benutzer Nicht bezahlter Benutzer
Premium-Tarif Standardebene
Wichtige Aufgaben Nicht wesentliche Vorgänge
Konten mit hohem Umsatz Konten mit geringem Umsatz

Isolieren kritischer Flüsse

Der Prozess der Isolierung kritischer Flüsse besteht darin, dedizierte Ressourcen oder Kapazitäten zur Unterstützung kritischer Flüsse bereitzustellen. Sie möchten Ressourcen und Aufmerksamkeit für diese Flüsse zuweisen, die für eine optimale Benutzererfahrung oder erhebliche Geschäftsergebnisse unerlässlich sind. Ziel ist es, sicherzustellen, dass kritische Flüsse genügend Rechenleistung, Netzwerkbandbreite und Ressourcen erhalten, um effizient und effektiv zu arbeiten. Durch das Isolieren kritischer Flüsse können Sie die Ressourcen, die kritische Flüsse unterstützen, einfacher verwalten. Hier sind Empfehlungen zum Isolieren kritischer Flüsse:

  • Ressourcensegmentierung: Erstellen Sie separate Ressourcen für kritische Abläufe, sodass sie unabhängig von anderen Prozessen arbeiten können. Beispielsweise können Sie kritische Flüsse in dedizierten Netzwerksegmenten isolieren oder dedizierte Server verwenden, um die Verarbeitungsanforderungen dieser Flüsse zu verarbeiten. Dieser Ansatz trägt dazu bei, zu minimieren, wie sich nicht kritische Flüsse negativ auf kritische Flüsse auswirken können.

  • Logische Segmentierung: Verwenden Sie Virtualisierungs- und Containerisierungstools wie Docker oder Kubernetes, um Abläufe auf Softwareebene zu isolieren. Sie können kritische Flüsse in virtuelle Computer (VMs) trennen. Auf diese Weise erstellen Sie eine isolierte Umgebung, reduzieren Abhängigkeiten und potenzielle Störungen aus anderen Flüssen.

  • Kapazitätszuordnung: Weisen Sie für kritische Flüsse explizit einen festen Satz von Kapazität wie CPU, Arbeitsspeicher und E/A des Datenträgers zu. Durch diese Zuordnung wird sichergestellt, dass kritische Flüsse immer über genügend Ressourcen verfügen, um effizient zu arbeiten. Legen Sie Ressourcenkontingente oder Grenzwerte mithilfe von Orchestrierungsplattformen fest. Indem Sie Ressourcen explizit kritischen Flüssen zuordnen, verhindern Sie die Ressourcenverknügung und priorisieren, wie sie ausgeführt werden.

Tradeoff: Die Ressourcensegmentierung wirkt sich auf Kosten aus. Wenn Sie Ressourcen einem Fluss zuordnen, erhöhen Sie häufig die Kosten und lassen einige Ressourcen unterlastet. Um die Leistungsverbesserungen an kritischen Flüssen zu rechtfertigen, muss die Zunahme der Geschäftsauswirkungen den Anstieg der Kosten überwiegen.

Optimieren der Kapazitätszuweisung

Wenn Sie kritische Flüsse nicht isolieren können, besteht die nächste beste Option darin, kritische Flüsse beim Zugriff auf verfügbare Kapazität zu priorisieren. Die Optimierung der Kapazitätszuweisung geht es um die strategische Verteilung der verfügbaren Kapazität an unterschiedliche Flüsse basierend auf ihrer Kritischität. Kapazität umfasst CPU, Arbeitsspeicher, Speicher und Netzwerkbandbreite. Ziel ist es, sicherzustellen, dass die kritischsten Flüsse (höchste Priorität) die erforderliche Kapazität erhalten, um effektiv zu arbeiten. Um zu entscheiden, wie Kapazität zugewiesen werden soll, sollten Sie die folgenden Strategien berücksichtigen:

  • Bewerten der Ressourcenkapazität: Bewerten Sie, wie viel Ressourcenkapazität den Flüssen zugeordnet werden kann. Die Kapazität kann Ressourcen wie CPU, Arbeitsspeicher, Speicher und Netzwerkbandbreite umfassen. Verstehen Sie die Einschränkungen und Einschränkungen Ihrer Infrastruktur oder Umgebung.

  • Analysieren Sie die Flussanforderungen: Analysieren Sie die Ressourcenanforderungen der einzelnen Flusse. Verstehen sie die Ressourcen, die der Fluss effizient betreiben muss. Identifizieren Sie für jeden Fluss die Ressourcenanforderungen, z. B. CPU-Auslastung, Arbeitsspeicheranforderungen und Netzwerkbandbreite.

  • Priorisieren Sie Zuordnungen: Stimmen Sie die verfügbare Ressourcenkapazität den Ressourcenanforderungen der Flüsse zu. Ordnen Sie Ressourcen basierend auf den Flussprioritäten zu, um sicherzustellen, dass Flüsse mit höherer Priorität die erforderlichen Ressourcen erhalten, um ihre Anforderungen zu erfüllen. Verstehen Sie, wo Ihre strengsten Einschränkungen liegen, und optimieren Sie kapazitätszuordnungen, wo sie benötigt werden. Beispielsweise können Warteschlangen nur einige Nachrichten pro Minute verarbeiten, aber einige Speichergrenzwerte sind schwer zu erreichen.

  • Verwenden Sie die Zinsbegrenzung: Um sicherzustellen, dass kritische Flüsse die Ressourcen verbrauchen können, die sie benötigen, um ihre Leistungsziele zu erfüllen, wenden Sie Zinsgrenzwerte auf nicht kritische Flüsse und Vorgänge an. Die Anzahl der Anforderungen mit niedrigerer Priorität wird begrenzt, und Benutzer können eingeschränkte Ressourcen vornehmen. Sie können z. B. Anforderungen für nichtprioritätsbeschränkungen an eine API begrenzen. Weitere Informationen finden Sie im Rate Limiting Pattern and Rate limiting an HTTP handler in .NET.

  • Verwenden Sie die Verarbeitung der Prioritätswarteschlange: Die Prioritätswarteschlangenverarbeitung bietet bestimmten Anforderungen eine hohe Priorität. Warteschlangen verfügen in der Regel über eine first in, first out (FIFO)-Struktur, aber Sie können Ihre Anwendung aktualisieren, um Nachrichten, die sie der Warteschlange hinzugefügt, eine Priorität zuzuweisen. Verwenden Sie diese Funktion, um kritische Flüsse und Benutzer zu priorisieren. Weitere Informationen finden Sie im Muster "Priority Queue".

Risiko: Es kann eine Herausforderung sein, die Anforderungen kritischer Flüsse mit der Gesamtleistung einer Workload abzuwägen. Obwohl Sie kritische Flüsse priorisieren sollten, sollten Sie nicht kritische Flüsse vernachlässigen. Die Gesamtleistungseffizienz einer Workload hängt von allen Flüssen ab. Vernachlässigte nicht kritische Flüsse könnten Probleme erzeugen, die sich auf alle Benutzer auswirken. Zu viel Rauschen von nicht wichtigen Elementen stiehlt die Aufmerksamkeit von kritischen Elementen. Aber zu wenig Lärm könnte die gesamte Arbeitsauslastung beschädigen. Die Datenmenge und die Anzahl der Warnungen sollten diese ausgewogenen Prioritäten widerspiegeln.

Azure-Erleichterung

Identifizieren und Überwachen von Flüssen: Azure bietet verschiedene Lösungen, mit denen Sie die Leistung kritischer Flüsse in Ihrer Workload überwachen können. Azure Monitor, Azure Monitor Logs und Azure Application Insights sind einige der Dienste, die umfassende Überwachungsfunktionen für verschiedene Arten von Anwendungen und Workloads bieten.

Optimieren von Kapazitätszuordnungen: Einige Azure-Dienste unterstützen ressourcensegmentierung, logische Segmentierung und Kapazitätszuordnungstechniken, um Kapazität und Ressourcen kritischen Flüssen zuzuordnen. Sie können kritische Flüsse durch Techniken wie das Erstellen separater Ressourcen, die Erhöhung der Dichte, die Virtualisierung und Containerisierung und explizite Zuordnung von Ressourcen zu kritischen Flüssen isolieren.

Einige Azure-Dienste, z. B. Azure API Management, stellen integrierte Richtlinien für die Ratenbegrenzung bereit. Azure bietet detaillierte Anleitungen und eine Beispielimplementierung des Entwurfsmusters für die Begrenzung von Raten.

Azure unterstützt die Verarbeitung von Prioritätswarteschlangen. Azure Functions bietet ereignisgesteuerte Funktionen, die Sie auf verschiedene Arten auslösen können, einschließlich einer neuen Nachricht in einer Warteschlange oder einem Thema. Kombinieren Sie Azure-Funktionen mit Azure Queue Storage oder Azure Service Bus , um Nachrichten basierend auf ihrer Priorität zu verarbeiten.

Prüfliste zur Leistungseffizienz

Lesen Sie den vollständigen Satz von Empfehlungen.