Bearbeiten

Skalierbare Auftragsverarbeitung

Azure Cosmos DB
Azure HDInsight

Dieses Beispielszenario ist für Organisationen relevant, die eine hoch skalierbare und robuste Architektur für die Verarbeitung von Onlineaufträgen benötigen. Zu den potenziellen Anwendungsbereichen gehören E-Commerce und Points of Sale im Einzelhandel, Auftragserfüllung und Bestandsreservierung und -nachverfolgung.

Architektur

Diagramm einer Beispielarchitektur für eine skalierbare Auftragsverarbeitungspipeline.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Datenfluss

Anhand dieser Architektur werden die wichtigsten Komponenten einer Pipeline für die Auftragsverarbeitung ausführlich beschrieben. Die Daten durchlaufen das Szenario wie folgt:

  1. Ereignisnachrichten gelangen über kundenorientierte Anwendungen in das System (synchron per HTTP) und in verschiedene Back-End-Systeme (asynchron per Apache Kafka). Diese Nachrichten werden an eine Pipeline für die Befehlsverarbeitung übergeben.
  2. Jede Ereignisnachricht wird erfasst und über einen Befehlsprozessor-Microservice einer definierten Gruppe von Befehlen zugeordnet. Der Befehlsprozessor ruft alle aktuellen Status, die für die Ausführung des Befehls relevant sind, aus einer Ereignisdatenstrom-Momentaufnahmedatenbank ab. Der Befehl wird dann ausgeführt, und die Ausgabe des Befehls wird als neues Ereignis ausgegeben.
  3. Jedes Ereignis, das für einen Befehl ausgegeben wird, wird per Azure Cosmos DB in eine Ereignisdatenstrom-Datenbank committet.
  4. Für jede Datenbankeinfügung und jedes Update, die bzw. das für die Ereignisdatenstrom-Datenbank committet wird, wird vom Azure Cosmos DB-Änderungsfeed ein Ereignis ausgelöst. Nachgeschaltete Systeme können alle Ereignisthemen abonnieren, die für das jeweilige System relevant sind.
  5. Alle Ereignisse aus dem Azure Cosmos DB-Änderungsfeed werden außerdem an einen Microservice für Momentaufnahmen-Ereignisdatenströme gesendet, über den alle von Ereignissen verursachten Statusänderungen berechnet werden, die aufgetreten sind. Der neue Status wird dann für die in Azure Cosmos DB gespeicherte Ereignisdatenstrom-Momentaufnahmedatenbank committet. Die Momentaufnahmedatenbank stellt eine global verteilte Datenquelle mit geringer Latenz für den aktuellen Status aller Datenelemente bereit. Die Ereignisdatenstrom-Datenbank umfasst eine vollständige Aufzeichnung aller Ereignisnachrichten, die die Architektur durchlaufen haben, um robuste Szenarien für Tests, Problembehandlung und Notfallwiederherstellung zu ermöglichen.

Komponenten

  • Azure Cosmos DB ist die global verteilte Datenbank von Microsoft mit mehreren Modellen. Hiermit können Ihre Lösungen den Durchsatz und die Speicherung für eine beliebige Zahl von geografischen Regionen elastisch und unabhängig skalieren. Azure Cosmos DB bietet Ihnen mit umfassenden Vereinbarungen zum Servicelevel (Service Level Agreements, SLAs) Durchsatz-, Wartezeit-, Verfügbarkeits- und Konsistenzgarantien. In diesem Szenario wird Azure Cosmos DB für die Speicherung von Ereignisdatenströmen und Momentaufnahmen verwendet, und die Features des Azure Cosmos DB-Änderungsfeeds werden angewendet, um für Datenkonsistenz und Wiederherstellung nach Fehlern zu sorgen.
  • Apache Kafka in Azure HDInsight ist eine Implementierung eines verwalteten Diensts von Apache Kafka. Hierbei handelt es sich um eine verteilte Open-Source-Streamingplattform für die Erstellung von Datenpipelines und Anwendungen mit Echtzeitstreaming. Kafka verfügt auch über Nachrichtenbrokerfunktionen, die einer Nachrichtenwarteschlange zum Veröffentlichen und Abonnieren von benannten Datenströmen ähneln. In diesem Szenario wird Kafka genutzt, um eingehende und nachgeschaltete Ereignisse in der Pipeline für die Auftragsverarbeitung zu verarbeiten.

Szenariodetails

In diesem Szenario wird ein Ansatz zur Ermittlung der Ereignisherkunft verwendet, indem über Microservices ein funktionierendes Programmiermodell implementiert wird. Jeder Microservice wird als Datenstromprozessor behandelt, und die gesamte Geschäftslogik wird mithilfe von Microservices implementiert. Dieser Ansatz ermöglicht Hochverfügbarkeit sowie Resilienz, Georeplikation und eine hohe Leistung.

Die Verwendung verwalteter Azure-Dienste, z. B. Azure Cosmos DB und HDInsight, kann zur Kostenreduzierung beitragen, indem das Wissen von Microsoft in Bezug auf die global verteilte Datenspeicherung und der damit verbundene Datenabruf auf Cloudebene genutzt werden. Dieses Szenario bezieht sich speziell auf den Bereich E-Commerce bzw. Einzelhandel. Falls Sie über andere Anforderungen an Datendienste verfügen, hilft Ihnen die Liste mit den verfügbaren vollständig verwalteten intelligenten Datenbankdiensten in Azure weiter.

Mögliche Anwendungsfälle

Zu den weiteren relevanten Anwendungsfällen zählen:

  • Back-End-Systeme für E-Commerce oder Points of Sale im Einzelhandel
  • Bestandsverwaltungssysteme für den Einzelhandel oder die Fertigungsindustrie
  • Systeme für die Auftragserfüllung
  • Weitere Integrationsszenarien, die für eine Pipeline zur Auftragsverarbeitung relevant sind

Überlegungen

Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Für die Echtzeiterfassung von Nachrichten, Datenspeicherung, Datenstromverarbeitung und Speicherung von Analysedaten sowie für Analysen und Berichte stehen zahlreiche Technologieoptionen zur Verfügung.

Microservices haben sich zu einem beliebten Architekturstil für die Erstellung robuster, hochgradig skalierbarer, unabhängig bereitstellbarer Cloudanwendungen entwickelt, die sich schnell weiterentwickeln lassen. Für Microservices ist in Bezug auf das Entwerfen und Erstellen von Anwendungen ein anderer Ansatz erforderlich. Eine Anleitung zum Aufbau und Betrieb einer Microservices-basierten Architektur finden Sie unter Designing microservices on Azure.

Verfügbarkeit

Mit dem Ansatz zur Ermittlung der Ereignisherkunft dieses Szenarios können Systemkomponenten lose gekoppelt und unabhängig voneinander bereitgestellt werden. Azure Cosmos DB ermöglicht Hochverfügbarkeit, und Organisationen können damit Nachteile im Hinblick auf Konsistenz, Verfügbarkeit und Leistung ausgleichen – jeweils mit entsprechenden Garantien. Apache Kafka in HDInsight ist ebenfalls auf Hochverfügbarkeit ausgelegt.

Azure Monitor bietet einheitliche Benutzeroberflächen für die übergreifende Überwachung verschiedener Azure-Dienste. Weitere Informationen finden Sie unter Überwachen von Azure-Anwendungen und -Ressourcen. Event Hubs und Stream Analytics sind jeweils mit Azure Monitor verknüpft.

Weitere Aspekte zur Verfügbarkeit finden Sie in der Checkliste für die Verfügbarkeit.

Skalierbarkeit

Kafka in HDInsight ermöglicht die Konfiguration der Speicherung und Skalierbarkeit für Kafka-Cluster. Mit Azure Cosmos DB erhalten Sie eine schnelle und vorhersagbare Leistung und können nahtlos skalieren, wenn Ihre Anwendung wächst. Die auf Microservices basierende Architektur zur Ermittlung der Ereignisherkunft dieses Szenarios vereinfacht außerdem das Skalieren Ihres Systems und das Erweitern der Funktionalität.

Weitere Aspekte zur Skalierbarkeit finden Sie im Azure Architecture Center in der Prüfliste zur Leistungseffizienz.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Über das Azure Cosmos DB-Sicherheitsmodell werden Benutzer authentifiziert, und der Zugriff auf die entsprechenden Daten und Ressourcen wird gewährt. Weitere Informationen finden Sie unter Azure Cosmos DB-Datenbanksicherheit.

Allgemeine Informationen zum Entwerfen sicherer Lösungen finden Sie in der Dokumentation zur Azure-Sicherheit.

Resilienz

Die Event Sourcing-Architektur und die zugehörige Technologie in diesem Beispielszenario sorgen für eine hohe Resilienz gegenüber dem Auftreten von Fehlern. Allgemeine Informationen zur Entwicklung robuster Lösungen finden Sie unter Entwerfen robuster Anwendungen für Azure.

Kostenoptimierung

Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

Zur Untersuchung der Betriebskosten für diese Lösung sind alle Dienste im Kostenrechner vorkonfiguriert. Wenn Sie wissen möchten, welche Kosten für Ihr jeweiliges Szenario entstehen, passen Sie die entsprechenden Variablen an Ihre voraussichtliche Datenmenge an. In diesem Szenario sind in den Beispielpreisen nur Azure Cosmos DB und ein Kafka-Cluster für die Verarbeitung von Ereignissen enthalten, die über den Azure Cosmos DB-Änderungsfeed ausgelöst werden. Ereignisprozessoren und Microservices für Ursprungssysteme und andere nachgeschaltete Systeme sind nicht enthalten. Die Kosten hierfür sind stark von der Anzahl und Skalierung dieser Dienste sowie von der Technologie abhängig, die für deren Implementierung gewählt wurde.

Die Währung von Azure Cosmos DB ist die Anforderungseinheit (Request Unit, RU). Mit Anforderungseinheiten ist es nicht mehr erforderlich, Kapazitäten für Lese- und Schreibvorgänge zu reservieren oder CPU, Arbeitsspeicher und IOPS bereitzustellen. Azure Cosmos DB unterstützt verschiedene APIs mit unterschiedlichen Vorgängen, die von einfachen Lese- und Schreibvorgängen bis hin zu komplexen Graphabfragen reichen. Da die Anforderungen sich unterscheiden, wird ihnen eine normalisierte Menge von Anforderungseinheiten zugewiesen, die auf dem Rechenaufwand basiert, der für die Verarbeitung der Anforderung erforderlich ist. Die Anzahl von Anforderungseinheiten, die für Ihre Lösung erforderlich sind, richtet sich nach der Datenelementgröße und der Anzahl von Lese- und Schreibvorgängen der Datenbank pro Sekunde. Weitere Informationen finden Sie unter Anforderungseinheiten in Azure Cosmos DB. Diese geschätzten Preise basieren auf der Ausführung von Azure Cosmos DB in zwei Azure-Regionen.

Auf Grundlage der zu erwartenden Aktivitätsmenge haben wir drei exemplarische Kostenprofile erstellt:

  • Klein: Dieses Preisbeispiel entspricht fünf reservierten RUs mit einem 1-TB-Datenspeicher in Azure Cosmos DB und einem kleinen Kafka-Cluster (D3 v2).
  • Mittel: Dieses Preisbeispiel entspricht fünfzig reservierten RUs mit einem 10-TB-Datenspeicher in Azure Cosmos DB und einem mittelgroßen Kafka-Cluster (D4 v2).
  • Groß: Dieses Preisbeispiel entspricht fünfhundert reservierten RUs mit einem 30-TB-Datenspeicher in Azure Cosmos DB und einem großen Kafka-Cluster (D5 v2).

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Nächste Schritte

Dieses Beispielszenario basiert auf einer umfassenderen Version dieser Architektur, die von jet.com für die Pipeline zur End-to-End-Auftragsverarbeitung des Unternehmens erstellt wurde. Weitere Informationen finden Sie unter dem technischen Kundenprofil von jet.com und in der Präsentation von jet.com auf der Build.

Weitere Informationen finden Sie hier:

Weitere Informationen finden Sie in den zugehörigen Architekturinhalten: