Lösungsmuster in Azure Stream AnalyticsAzure Stream Analytics solution patterns

Wie viele andere Dienste in Azure wird Stream Analytics am besten mit anderen Diensten verwendet, um eine größere End-to-End-Lösung zu erstellen.Like many other services in Azure, Stream Analytics is best used with other services to create a larger end-to-end solution. Dieser Artikel beschreibt einfache Azure Stream Analytics-Lösungen und verschiedene Architekturmuster.This article discusses simple Azure Stream Analytics solutions and various architectural patterns. Sie können auf Basis dieser Muster komplexere Lösungen entwickeln.You can build on these patterns to develop more complex solutions. Die in diesem Artikel beschriebenen Muster können in einer Vielzahl von Szenarien verwendet werden.The patterns described in this article can be used in a wide variety of scenarios. Beispiele für Muster für bestimmte Szenarien finden Sie unter Azure-Lösungsarchitekturen.Examples of scenario-specific patterns are available on Azure solution architectures.

Erstellen eines Stream Analytics-Auftrags zur Förderung von Dashboarding in EchtzeitCreate a Stream Analytics job to power real-time dashboarding experience

Mithilfe von Azure Stream Analytics können Sie schnell Echtzeitdashboards und Warnungen bereitstellen.With Azure Stream Analytics, you can quickly stand up real-time dashboards and alerts. Eine einfache Lösung erfasst Ereignisse von Event Hubs oder IoT Hub und speist das Power BI-Dashboard mit einem Streamingdataset.A simple solution ingests events from Event Hubs or IoT Hub, and feeds the Power BI dashboard with a streaming data set. Weitere Informationen finden Sie in dem ausführlichen Tutorial Analysieren von Telefonanrufdaten mit Stream Analytics und Visualisieren der Ergebnisse in einem Power BI-Dashboard.For more information, see the detailed tutorial Analyze phone call data with Stream Analytics and visualize results in Power BI dashboard.

ASA – Power BI-Dashboard

Diese Lösung kann in nur wenigen Minuten im Azure-Portal erstellt werden.This solution can be built in just a few minutes from Azure portal. Sie erfordert keine aufwändige Codierung, und die Geschäftslogik wird in der SQL-Sprache geschrieben.There is no extensive coding involved, and SQL language is used to express the business logic.

Dieses Lösungsmuster bietet das geringste Maß an Latenz zwischen der Ereignisquelle und dem Power BI-Dashboard in einem Browser.This solution pattern offers the lowest latency from the event source to the Power BI dashboard in a browser. Azure Stream Analytics ist der einzige Azure-Dienst mit dieser integrierten Funktion.Azure Stream Analytics is the only Azure service with this built-in capability.

Verwenden von SQL für das DashboardUse SQL for dashboard

Das Power BI-Dashboard bietet niedrige Latenz, aber es kann nicht verwendet werden, um voll funktionsfähige Power BI-Berichte zu erstellen.The Power BI dashboard offers low latency, but it cannot be used to produce full fledged Power BI reports. Einem gängigen Muster für die Berichterstellung folgend sollten Sie Ihre Daten zuerst in eine SQL-Datenbank ausgeben.A common reporting pattern is to output your data to a SQL database first. Verwenden Sie dann den SQL-Connector von Power BI für die SQL-Abfrage der aktuellen Daten.Then use Power BI's SQL connector to query SQL for the latest data.

ASA – SQL-Dashboard

Die Verwendung der SQL-Datenbank bietet Ihnen zwar mehr Flexibilität, aber auf Kosten leicht erhöhter Latenz.Using SQL database gives you more flexibility but at the expense of a slightly higher latency. Diese Lösung ist optimal für Aufträge, bei denen die Latenzanforderungen über einer Sekunde liegen.This solution is optimal for jobs with latency requirements greater than one second. Mit dieser Methode können Sie die Funktionen von Power BI in vollem Umfang ausnutzen, um Daten gezielter für Berichte auszuwerten, und Sie erhalten mehr Optionen zur Visualisierung.With this method, you can maximize Power BI capabilities to further slice and dice the data for reports, and much more visualization options. Sie erhalten auch die Flexibilität der Verwendung anderer Dashboardlösungen, wie z.B. Tableau.You also gain the flexibility of using other dashboard solutions, such as Tableau.

SQL ist kein Datenspeicher mit hohem Durchsatz.SQL is not a high throughput data store. Der maximale Durchsatz von Azure Stream Analytics auf eine SQL-Datenbank liegt derzeit bei etwa 24 MB/s.The maximum throughput to a SQL database from Azure Stream Analytics is currently around 24 MB/s. Wenn die Ereignisquellen in der Lösung Daten mit höherer Rate produzieren, müssen Sie die Ausgaberate an SQL mit der Verarbeitungslogik in Stream Analytics reduzieren.If the event sources in your solution produce data at a higher rate, you need to use processing logic in Stream Analytics to reduce the output rate to SQL. Techniken wie z.B. Filtern, Aggregat im Fenstermodus, Musterabgleich mit temporalen Verknüpfungen und Analysefunktionen können verwendet werden.Techniques such as filtering, windowed aggregates, pattern matching with temporal joins, and analytic functions can be used. Techniken, mit denen die Ausgaberate an SQL weiter optimiert werden kann, werden in Azure Stream Analytics-Ausgabe an Azure SQL-Datenbank beschrieben.The output rate to SQL can be further optimized using techniques described in Azure Stream Analytics output to Azure SQL Database.

Integrieren von Echtzeiteinblicken in Ihre Anwendung mit EreignisnachrichtenIncorporate real-time insights into your application with event messaging

Die zweithäufigste Verwendung von Stream Analytics ist das Generieren von Echtzeitwarnungen.The second most popular use of Stream Analytics is to generate real-time alerts. Bei diesem Lösungsmuster kann Geschäftslogik in Stream Analytics zum Erkennen von temporalen und räumlichen Mustern oder Anomalien und anschließendem Generieren von Warnsignalen verwendet werden.In this solution pattern, business logic in Stream Analytics can be used to detect temporal and spatial patterns or anomalies, then produce alerting signals. Hier kann im Gegensatz zur Dashboardlösung, wo Stream Analytics Power BI als bevorzugten Endpunkt verwendet, eine Anzahl von Zwischendatensenken verwendet werden.However, unlike the dashboard solution where Stream Analytics uses Power BI as a preferred endpoint, a number of intermediate data sinks can be used. Zu diesen Senken zählen Event Hubs, Service Bus und Azure Functions.These sinks include Event Hubs, Service Bus, and Azure Functions. Als Entwickler der Anwendung müssen Sie entscheiden, welche Datensenke am besten für Ihr Szenario geeignet sind.You, as the application builder, need to decide which data sink works best for your scenario.

Downstreamereignis-Verarbeitungslogik muss zum Generieren von Warnungen in Ihren vorhandenen Geschäftsworkflow implementiert werden.Downstream event consumer logic must be implemented to generate alerts in your existing business workflow. Da Sie benutzerdefinierte Logik in Azure Functions implementieren können, stellt diese Lösung die schnellste Möglichkeit dar, diese Integration durchzuführen.Because you can implement custom logic in Azure Functions, Azure Functions is the fastest way you can perform this integration. Ein Tutorial zur Verwendung von Azure Functions als Ausgabe für einen Stream Analytics-Auftrag finden Sie unter Ausführen von Azure Functions in Azure Stream Analytics-Aufträgen.A tutorial for using Azure Function as the output for a Stream Analytics job can be found in Run Azure Functions from Azure Stream Analytics jobs. Azure Functions unterstützt auch verschiedene Arten von Benachrichtigungen einschließlich Text und E-Mail.Azure Functions also supports various types of notifications including text and email. Logic Apps kann auch für eine solche Integration verwendet werden, mit Event Hubs zwischen Stream Analytics und Logic Apps.Logic App may also be used for such integration, with Event Hubs between Stream Analytics and Logic App.

ASA – Ereignisnachrichten-App

Event Hubs bietet auf der anderen Seite den flexibelsten Integrationspunkt.Event Hubs, on the other hand, offers the most flexible integration point. Viele andere Dienste wie Azure Data Explorer and Time Series Insights können Ereignisse von Event Hubs verarbeiten.Many other services, like Azure Data Explorer and Time Series Insights can consume events from Event Hubs. Es können direkt Verbindungen von Diensten mit der Event Hubs-Senke von Azure Stream Analytics hergestellt werden, um die Lösung fertigzustellen.Services can be connected directly to the Event Hubs sink from Azure Stream Analytics to complete the solution. Event Hubs ist auch der Nachrichtenbroker mit dem höchsten Durchsatz, der für solche Integrationsszenarien in Azure verfügbar ist.Event Hubs is also the highest throughput messaging broker available on Azure for such integration scenarios.

Dynamische Anwendungen und WebsitesDynamic applications and websites

Sie können mithilfe von Azure Stream Analytics und Azure SignalR Service benutzerdefinierte Visualisierungen in Echtzeit erstellen, z.B. Dashboard- oder Kartenvisualisierung.You can create custom real-time visualizations, such as dashboard or map visualization, using Azure Stream Analytics and Azure SignalR Service. Mit SignalR können Webclients aktualisiert und dynamische Inhalte in Echtzeit angezeigt werden.Using SignalR, web clients can be updated and show dynamic content in real-time.

ASA – dynamische App

Integrieren von Echtzeiteinblicken in Ihre Anwendung mit DatenspeichernIncorporate real-time insights into your application through data stores

Die meisten Webdienste und Webanwendungen verwenden heute ein Anforderung/Antwort-Muster für die Darstellungsschicht.Most web services and web applications today use a request/response pattern to serve the presentation layer. Das Anforderung/Antwort-Muster ist einfach zu erstellen und kann mithilfe eines zustandslosen Front-Ends und skalierbaren Speichern wie Cosmos DB einfach mit schnellen Antwortzeiten skaliert werden.The request/response pattern is simple to build and can be easily scaled with low response time using a stateless frontend and scalable stores, like Cosmos DB.

Hohe Datenvolumen führen in einem CRUD-basierten System häufig zu Leistungsengpässen.High data volume often creates performance bottlenecks in a CRUD-based system. Das Ereignissourcing-Lösungsmuster wird verwendet, um Leistungsengpässe zu beheben.The event sourcing solution pattern is used to address the performance bottlenecks. Das Extrahieren von temporalen Mustern und Einblicken aus einem herkömmlichen Datenspeicher ist auch schwierig und ineffizient.Temporal patterns and insights are also difficult and inefficient to extract from a traditional data store. Moderne, von einem umfangreichen Datenvolumen gesteuerte Anwendungen übernehmen häufig eine datenflussbasierte Architektur.Modern high-volume data driven applications often adopt a dataflow-based architecture. Azure Stream Analytics ist als Computeengine für bewegte Daten zentrales A und O in dieser Architektur.Azure Stream Analytics as the compute engine for data in motion is a linchpin in that architecture.

ASA – Ereignissourcing-App

Bei diesem Lösungsmuster werden Ereignisse von Azure Stream Analytics verarbeitet und in Datenspeichern aggregiert.In this solution pattern, events are processed and aggregated into data stores by Azure Stream Analytics. Die Anwendungsschicht interagiert über das herkömmliche Anforderung/Antwort-Muster mit Datenspeichern.The application layer interacts with data stores using the traditional request/response pattern. Aufgrund der Fähigkeit von Stream Analytics zum Verarbeiten einer großen Anzahl von Ereignissen in Echtzeit ist die Anwendung hoch skalierbar, ohne dass die Datenspeicherschicht übermäßig groß angelegt werden muss.Because of Stream Analytics' ability to process a large number of events in real-time, the application is highly scalable without the need to bulk up the data store layer. Die Datenspeicherschicht ist im Wesentlichen eine materialisierte Sicht in das System.The data store layer is essentially a materialized view in the system. In Azure Stream Analytics-Ausgabe an Azure Cosmos DB wird beschrieben, wie Cosmos DB als Stream Analytics-Ausgabe verwendet wird.Azure Stream Analytics output to Azure Cosmos DB describes how Cosmos DB is used as a Stream Analytics output.

In realen Anwendungen, in denen die Verarbeitungslogik komplex ist und die Notwendigkeit besteht, bestimmte Teile der Logik unabhängig zu aktualisieren, können mehrere Stream Analytics-Aufträge mit Event Hubs als Zwischenereignisbroker zusammengestellt werden.In real applications where processing logic is complex and there is the need to upgrade certain parts of the logic independently, multiple Stream Analytics jobs can be composed together with Event Hubs as the intermediary event broker.

ASA – komplexe Ereignissourcing-App

Dieses Muster verbessert Resilienz und Verwaltbarkeit des Systems.This pattern improves the resiliency and manageability of the system. Obwohl Stream Analytics exakt eine Verarbeitung gewährleistet, besteht eine geringe Wahrscheinlichkeit, dass Ereignisse doppelt im zwischengeschalteten Event Hubs eingehen.However, even though Stream Analytics guarantees exactly once processing, there is a small chance that duplicate events may land in the intermediary Event Hubs. Für den nachgelagerten Stream Analytics-Auftrag ist wichtig, Ereignisse mit Logikschlüsseln in einem Rückblickfenster zu deduplizieren.It's important for the downstream Stream Analytics job to dedupe events using logic keys in a lookback window. Weitere Informationen zur Ereignisübermittlung finden Sie in der Referenz zu Garantien zur Ereignisbereitstellung.For more information on event delivery, see Event Delivery Guarantees reference.

Verwenden von Verweisdaten für die AnwendungsanpassungUse reference data for application customization

Das Verweisdatenfeature von Azure Stream Analytics wurde speziell für die Anpassung von z.B. Warnungsschwellenwert, Verarbeitungsregeln und Geofences durch Endbenutzer entworfen.The Azure Stream Analytics reference data feature is designed specifically for end-user customization like alerting threshold, processing rules, and geofences. Die Anwendungsschicht kann Parameteränderungen annehmen und in einer SQL-Datenbank speichern.The application layer can accept parameter changes and store them in a SQL database. Der Stream Analytics-Auftrag fragt in regelmäßigen Abständen Änderungen von der Datenbank ab und ermöglicht den Zugriff auf die Anpassungsparameter über eine Verweisdatenverknüpfung.The Stream Analytics job periodically queries for changes from the database and makes the customization parameters accessible through a reference data join. Weitere Informationen zum Verwenden von Verweisdaten für die Anwendungsanpassung finden Sie unter Verwenden von Verweisdaten aus einer SQL-Datenbank für einen Azure Stream Analytics-Auftrag (Vorschauversion) und JOIN-Anweisung für Verweisdaten.For more information on how to use reference data for application customization, see SQL reference data and reference data join.

Dieses Muster kann auch verwendet werden, um eine Regelengine dort zu implementieren, wo die Schwellenwerte der Regeln aus den Verweisdaten definiert werden.This pattern can also be used to implement a rules engine where the thresholds of the rules are defined from reference data. Weitere Informationen zu Regeln finden Sie unter Verarbeiten von konfigurierbaren schwellenwertbasierten Regeln in Azure Stream Analytics.For more information on rules, see Process configurable threshold-based rules in Azure Stream Analytics.

ASA – Verweisdaten-App

Hinzufügen von Machine Learning zu Ihren Einblicken in EchtzeitAdd Machine Learning to your real-time insights

Das integrierte Modell zur Anomalieerkennung von Azure Stream Analytics ist eine komfortable Möglichkeit, Machine Learning in Ihre Echtzeitanwendung einzuführen.Azure Stream Analytics' built-in Anomaly Detection model is a convenient way to introduce Machine Learning to your real-time application. Informationen zu einem umfassenderen Bereich der Machine Learning-Anforderungen finden Sie unter Durchführen von Standpunktanalysen mit Azure Stream Analytics und Azure Machine Learning.For a wider range of Machine Learning needs, see Azure Stream Analytics integrates with Azure Machine Learning's scoring service.

Erfahrene Benutzer, die Onlinetraining und -bewertung in dieselbe Stream Analytics-Pipeline integrieren möchten, sollten sich dieses Beispiel ansehen, wo dies mit linearer Regression durchgeführt wird.For advanced users who want to incorporate online training and scoring into the same Stream Analytics pipeline, see this example of how do that with linear regression.

ASA – Machine Learning-App

Data Warehousing nahezu in EchtzeitNear real-time data warehousing

Ein weiteres häufiges Muster ist das Data Warehousing in Echtzeit, auch als Streaming-Data Warehouse bezeichnet.Another common pattern is real-time data warehousing, also called streaming data warehouse. Zusätzlich zu Ereignissen, die von Ihrer Anwendung bei Event Hubs und IoT Hub eintreffen, kann Azure Stream Analytics auf IoT Edge verwendet werden, um Anforderungen an Datenbereinigung, Reduzierung der Datenmenge sowie Datenspeicher und Weiterleitung zu erfüllen.In addition to events arriving at Event Hubs and IoT Hub from your application, Azure Stream Analytics running on IoT Edge can be used to fulfill data cleansing, data reduction, and data store and forward needs. Auf IoT Edge ausgeführt kann Stream Analytics Bandbreiteneinschränkungen und Verbindungsprobleme im System ordnungsgemäß behandeln.Stream Analytics running on IoT Edge can gracefully handle bandwidth limitation and connectivity issues in the system. Der SQL-Ausgabeadapter kann für die Ausgabe an SQL Data Warehouse verwendet werden; allerdings ist der maximale Durchsatz auf 10MB/s beschränkt.The SQL output adapter can be used to output to SQL Data Warehouse; however, the maximum throughput is limited to 10 MB/s.

ASA – Data Warehousing

Eine Möglichkeit, den Durchsatz mit einem Latenzkompromiss zu verbessern, ist, die Ereignisse in Azure Blob Storage zu archivieren und sie dann mit Polybase in SQL Data Warehouse zu importieren.One way to improve the throughput with some latency tradeoff is to archive the events into Azure Blob storage, and then import them into SQL Data Warehouse with Polybase. Sie müssen die Ausgabe von Stream Analytics in Blob Storage und die Eingabe aus Blob Storage in SQL Data Warehouse durch Archivieren der Daten nach Zeitstempel manuell zusammenfügen und in regelmäßigen Abständen importieren.You must manually stitch together output from Stream Analytics to blob storage and input from blob storage to SQL Data Warehouse by archiving the data by timestamp and importing periodically.

Bei diesem Nutzungsmuster wird Azure Stream Analytics als eine nahezu in Echtzeit wirkende ETL-Engine verwendet.In this usage pattern, Azure Stream Analytics is used as a near real-time ETL engine. Neu ankommende Ereignisse werden kontinuierlich transformiert und für die Nutzung durch den nachgelagerten Analysedienst gespeichert.Newly arriving events are continuously transformed and stored for downstream analytics service consumption.

ASA – Data Warehousing mit hohem Durchsatz

Archivieren von Echtzeitdaten für die AnalyseArchiving real-time data for analytics

Die meisten Data Science- und Analyseaktivitäten werden immer noch offline durchgeführt.Most data science and analytics activities still happen offline. Daten können über Azure Data Lake Store Gen2-Ausgabe und Parquet-Ausgabeformate von Azure Stream Analytics archiviert werden.Data can be archived by Azure Stream Analytics through Azure Data Lake Store Gen2 output and Parquet output formats. Diese Funktion vermeidet die Probleme der direkten Datenübertragung in Azure Data Lake Analytics, Azure Databricks und Azure HDInsight.This capability removes the friction to feed data directly into Azure Data Lake Analytics, Azure Databricks, and Azure HDInsight. Azure Stream Analytics wird in dieser Lösung als eine nahezu in Echtzeit wirkende ETL-Engine verwendet.Azure Stream Analytics is used as a near real-time ETL engine in this solution. Sie können in Data Lake archivierte Daten mit verschiedenen Computeengines untersuchen.You can explore archived data in Data Lake using various compute engines.

ASA – Offlineanalyse

Verwenden von Verweisdaten zur AnreicherungUse reference data for enrichment

Datenanreicherung ist oft eine Anforderung für ETL-Engines.Data enrichment is often a requirement for ETL engines. Azure Stream Analytics unterstützt die Datenanreicherung mit Verweisdaten aus SQL-Datenbank und Azure Blob Storage.Azure Stream Analytics supports data enrichment with reference data from both SQL database and Azure Blob storage. Die Datenanreicherung ist sowohl für in Azure Data Lake als auch SQL Data Warehouse landende Daten möglich.Data enrichment can be done for data landing in both Azure Data Lake and SQL Data Warehouse.

ASA – Offlineanalyse mit Datenanreicherung

Operationalisieren von Einblicken aus archivierten DatenOperationalize insights from archived data

Wenn Sie das Offlineanalysemuster mit dem Nahezu-in-Echtzeit-Anwendungsmuster kombinieren, können Sie eine Feedbackschleife erstellen.If you combine the offline analytics pattern with the near real-time application pattern, you can create a feedback loop. Die Feedbackschleife ermöglicht der Anwendung die automatische Anpassung an sich ändernde Muster in den Daten.The feedback loop lets the application automatically adjust for changing patterns in the data. Diese Rückmeldungsschleife kann so einfach sein wie das Ändern des Schwellenwerts für die Warnung oder so komplex wie das erneute Trainieren von Machine Learning-Modellen.This feedback loop can be as simple as changing the threshold value for alerting, or as complex as retraining Machine Learning models. Dieselbe Lösungsarchitektur kann gleichermaßen auf in der Cloud und auf IoT Edge ausgeführte ASA-Aufträge angewendet werden.The same solution architecture can be applied to both ASA jobs running in the cloud and on IoT Edge.

ASA – Operationalisierung von Einblicken

Überwachung von ASA-AufträgenHow to monitor ASA jobs

Ein Azure Stream Analytics-Auftrag kann rund um die Uhr zur kontinuierlichen Verarbeitung eingehender Ereignisse in Echtzeit ausgeführt werden.An Azure Stream Analytics job can be run 24/7 to process incoming events continuously in real time. Die Betriebszeitgarantie ist für die Integrität der gesamten Anwendung entscheidend.Its uptime guarantee is crucial to the health of the overall application. Obwohl Stream Analytics als einziger Streaminganalysedienst in der Branche eine Verfügbarkeitsgarantie von 99,9% bietet, bleibt Ihnen vielleicht dennoch ein gewisses Maß an Ausfallzeiten nicht erspart.While Stream Analytics is the only streaming analytics service in the industry that offers a 99.9% availability guarantee, you may still incur some level of down time. Im Laufe der Jahre wurden bei Stream Analytics Metriken, Protokolle und Auftragsstatus eingeführt, die die Integrität der Aufträge widerspiegeln.Over the years, Stream Analytics has introduced metrics, logs, and job states to reflect the health of the jobs. Sie werden alle in der Benutzeroberfläche des Diensts Azure Monitor angezeigt und können nach der OMS exportiert werden.All of them are surfaced through Azure Monitor service and can be further exported to OMS. Weitere Informationen finden Sie unter Grundlegendes zur Stream Analytics-Auftragsüberwachung und zum Überwachen von Abfragen.For more information, see Understand Stream Analytics job monitoring and how to monitor queries.

ASA – Überwachung

Zwei Hauptkriterien sind zu überwachen:There are two key things to monitor:

  • Status „Fehler“ des AuftragsJob failed state

    Zuallererst müssen Sie sicherstellen, dass der Auftrag ausgeführt wird.First and foremost, you need to make sure the job is running. Wenn der Auftrag sich nicht im Ausführungsstatus befindet, werden keine neuen Metriken oder Protokolle generiert.Without the job in the running state, no new metrics or logs are generated. Aufträge können sich aus unterschiedlichen Gründen in einem fehlerhaften Zustand befinden, einschließlich einer hohen SU-Auslastung (d.h. Mangel an Ressourcen).Jobs can change to a failed state for various reasons, including having a high SU utilization level (i.e., running out of resources).

  • Wasserzeichenverzögerungs-MetrikenWatermark delay metrics

    Diese Metrik reflektiert, wie weit Ihre Verarbeitungspipeline in Gesamtbetrachtungszeit (Sekunden) zurückliegt.This metric reflects how far behind your processing pipeline is in wall clock time (seconds). Die Verzögerung ist zum Teil mit ihrer Verarbeitungslogik verbunden.Some of the delay is attributed to the inherent processing logic. Daher ist die Überwachung der zunehmenden Trends viel wichtiger als die Überwachung des absoluten Werts.As a result, monitoring the increasing trend is much more important than monitoring the absolute value. Der Verzögerung im stabilen Zustand sollten Sie mit dem Anwendungsentwurf begegnen, nicht mit Überwachung oder Warnungen.The steady state delay should be addressed by your application design, not by monitoring or alerts.

Bei einem Ausfall sollten Sie zuerst in Aktivitätsprotokollen und Diagnoseprotokollen nach Fehlern suchen.Upon failure, activity logs and diagnostics logs are the best places to begin looking for errors.

Erstellen robuster und unternehmenskritischer AnwendungenBuild resilient and mission critical applications

Unabhängig von der SLA-Garantie von Azure Stream Analytics und der Sorgfalt, mit der Sie die End-to-End-Anwendung ausführen, können Ausfälle auftreten.Regardless of Azure Stream Analytics' SLA guarantee and how careful you run your end-to-end application, outages happen. Wenn Ihre Anwendung unternehmenskritisch ist, müssen Sie auf Ausfälle vorbereitet sein, um ordnungsgemäß wiederherstellen zu können.If your application is mission critical, you need to be prepared for outages in order to recover gracefully.

Bei Warnungsanwendungen ist es am wichtigsten, die nächste Warnung zu erkennen.For alerting applications, the most important thing is to detect the next alert. Sie können wählen, den Auftrag bei der Wiederherstellung vom aktuellen Zeitpunkt aus neu zu starten und vergangene Warnungen zu ignorieren.You may choose to restart the job from the current time when recovering, ignoring past alerts. Die Auftragsstartzeit-Semantik liegt beim ersten Ausgabezeitpunkt, nicht dem ersten Eingabezeitpunkt.The job start time semantics are by the first output time, not the first input time. Die Eingabe wird um einen entsprechenden Zeitraum zurückgespult, um sicherzustellen, dass die erste Ausgabe zum angegebenen Zeitpunkt vollständig und korrekt ist.The input is rewound backwards an appropriate amount of time to guarantee the first output at the specified time is complete and correct. Sie erhalten keine teilweisen Aggregate und lösen als Ergebnis unerwartet Warnungen aus.You won't get partial aggregates and trigger alerts unexpectedly as a result.

Sie können auch wählen, die Ausgabe zu einem bestimmten Zeitpunkt in der Vergangenheit zu starten.You may also choose to start output from some amount of time in the past. Dank der Aufbewahrungsrichtlinien für Event Hubs und IoT Hub steht eine ausreichende Datenmenge zur Verarbeitung von einem Punkt in der Vergangenheit aus zur Verfügung.Both Event Hubs and IoT Hub's retention policies hold a reasonable amount of data to allow processing from the past. Die Frage ist nur, wie schnell Sie zum aktuellen Zeitpunkt aufholen und ob Sie rechtzeitig beginnen können, neue Warnungen zu generieren.The tradeoff is how fast you can catch up to the current time and start to generate timely new alerts. Daten verlieren im Laufe der Zeit schnell an Wert, daher ist es wichtig, schnell zum aktuellen Zeitpunkt aufzuholen.Data loses its value rapidly over time, so it's important to catch up to the current time quickly. Es gibt zwei Möglichkeiten, schnell aufzuholen:There are two ways to catch up quickly:

  • Stellen Sie während des Aufholens weitere Ressourcen (SU) bereit.Provision more resources (SU) when catching up.
  • Starten Sie ab dem aktuellen Zeitpunkt neu.Restart from current time.

Ab dem aktuellen Zeitpunkt neu zu starten ist einfach, allerdings mit dem Nachteil verbunden, dass eine Lücke während der Verarbeitung hinterlassen wird.Restarting from current the time is simple to do, with the tradeoff of leaving a gap during processing. Ein derartiger Neustart mag für Warnungsszenarien in Ordnung sein, kann aber für Dashboardszenarien problematisch sein und kommt für Archivierungs- und Data Warehousing-Szenarien nicht infrage.Restarting this way might be OK for alerting scenarios, but can be problematic for dashboard scenarios and is a non-starter for archiving and data warehousing scenarios.

Die Bereitstellung weiterer Ressourcen kann den Prozess beschleunigen, aber die Auswirkungen eines plötzlichen Anstiegs der Verarbeitungsrate sind komplex.Provisioning more resources can speed up the process, but the effect of having a processing rate surge is complex.

  • Prüfen Sie, ob Ihr Auftrag für eine größere Anzahl von SUs skalierbar ist.Test that your job is scalable to a larger number of SUs. Nicht alle Abfragen sind skalierbar.Not all queries are scalable. Sie müssen sicherstellen, dass Ihre Abfrage parallelisiert ist.You need to make sure your query is parallelized.

  • Stellen Sie sicher, dass genügend Partitionen in den vorgelagerten Event Hubs- oder IoT Hub-Instanzen vorhanden sind, sodass Sie weitere Durchsatzeinheiten (Throughput Units, TUs) zum Skalieren des Eingabedurchsatzes hinzufügen können.Make sure there are enough partitions in the upstream Event Hubs or IoT Hub that you can add more Throughput Units (TUs) to scale the input throughput. Beachten Sie, dass jede Event Hubs-TU eine maximale Ausgaberate von 2MB/s hat.Remember, each Event Hubs TU maxes out at an output rate of 2 MB/s.

  • Stellen Sie sicher, dass Sie genügend Ressourcen in den Ausgabesenken (d.h. SQL-Datenbank, Cosmos DB) bereitgestellt haben, damit sie den plötzlichen Anstieg der Ausgabe nicht drosseln, was manchmal zum Sperren des Systems führen kann.Make sure you have provisioned enough resources in the output sinks (i.e., SQL Database, Cosmos DB), so they don't throttle the surge in output, which can sometimes cause the system to lock up.

Das Wichtigste ist, die Änderung der Verarbeitungsrate vorwegzunehmen, diese Szenarien vor dem Start der Produktion zu testen und bereit zu sein, die Verarbeitung während der Wiederherstellungszeit ordnungsgemäß zu skalieren.The most important thing is to anticipate the processing rate change, test these scenarios before going into production, and be ready to scale the processing correctly during failure recovery time.

Im extremen Szenario, dass alle eingehenden Ereignisse verzögert sind, ist es möglich, dass alle verzögerten Ereignisse gelöscht werden, wenn Sie ein spätes Ankunftsfenster für Ihren Auftrag angewendet haben.In the extreme scenario that incoming events are all delayed, it's possible all the delayed events are dropped if you have applied a late arriving window to your job. Das Löschen der Ereignisse mag zunächst mysteriös erscheinen, doch Stream Analytics erwartet als Echtzeitverarbeitungs-Engine, dass eingehende Ereignisse nahe an der Gesamtbetrachtungszeit liegen.The dropping of the events may appear to be a mysterious behavior at the beginning; however, considering Stream Analytics is a real-time processing engine, it expects incoming events to be close to the wall clock time. Sie muss Ereignisse löschen, die diese Einschränkungen verletzen.It has to drop events that violate these constraints.

Lambda-Architekturen oder AbgleichsprozessLambda Architectures or Backfill process

Glücklicherweise kann das vorherige Datenarchivierungsmuster verwendet werden, um diese verspäteten Ereignisse ordnungsgemäß zu verarbeiten.Fortunately, the previous data archiving pattern can be used to process these late events gracefully. Dahinter steht der Gedanke, dass der Archivierungsauftrag eingehende Ereignisse zur Eingangszeit verarbeitet und Ereignisse in Azure Blob Storage oder Azure Data Lake Store mit ihrer Ereigniszeit im richtigen Zeitbucket archiviert.The idea is that the archiving job processes incoming events in arrival time and archives events into the right time bucket in Azure Blob or Azure Data Lake Store with their event time. Ganz gleich, wie spät ein Ereignis eingeht, es wird nie gelöscht.It doesn't matter how late an event arrives, it will never be dropped. Es gelangt immer in den richtigen Zeitbucket.It will always land in the right time bucket. Während der Wiederherstellung können die archivierten Ereignisse erneut verarbeitet und die Ergebnisse mit dem Speicher Ihrer Wahl abgeglichen werden.During recovery, it's possible to reprocess the archived events and backfill the results to the store of choice. Dies ähnelt der Art, in der Lambda-Muster implementiert werden.This is similar to how lambda patterns are implemented.

ASA – Abgleich

Der Abgleich muss mit einem Offline-Batchverarbeitungssystem erfolgen, dessen Programmiermodell sich wahrscheinlich von dem von Azure Stream Analytics unterscheidet.The backfill process has to be done with an offline batch processing system, which most likely has a different programming model than Azure Stream Analytics. Dies bedeutet, dass Sie die gesamte Verarbeitungslogik erneut implementieren müssen.This means you have to re-implement the entire processing logic.

Für den Abgleich ist es immer noch wichtig, zumindest vorübergehend mehr Ressourcen für die Ausgabesenken bereitzustellen, um einen höheren Durchsatz zu verarbeiten, als die Verarbeitung im stabilen Zustand erfordert.For backfilling, it's still important to at least temporarily provision more resource to the output sinks to handle higher throughput than the steady state processing needs.

SzenarienScenarios Nur ab jetzt neu startenRestart from now only Vom letzten Stoppzeitpunkt aus neu startenRestart from last stopped time Ab jetzt neu starten + Abgleich mit archivierten EreignissenRestart from now + backfill with archived events
DashboardingDashboarding Erstellt LückeCreates gap OK für kurzen AusfallOK for short outage Verwendung für langen AusfallUse for long outage
WarnungenAlerting AkzeptabelAcceptable OK für kurzen AusfallOK for short outage Nicht erforderlichNot necessary
Ereignissourcing-AppEvent sourcing app AkzeptabelAcceptable OK für kurzen AusfallOK for short outage Verwendung für langen AusfallUse for long outage
Data WarehousingData warehousing DatenverlustData loss AkzeptabelAcceptable Nicht erforderlichNot necessary
OfflineanalyseOffline analytics DatenverlustData loss AkzeptabelAcceptable Nicht erforderlichNot necessary

Zusammenfügen des GesamtbildsPutting it all together

Es ist nicht schwierig, sich vorzustellen, dass alle oben genannten Lösungsmuster in einem komplexen End-to-End-System kombiniert werden können.It's not hard to imagine that all the solution patterns mentioned above can be combined together in a complex end-to-end system. Das kombinierte System kann Dashboards, Warnungen, Ereignissourcinganwendungen, Data Warehousing und Offlineanalysefunktionen enthalten.The combined system can include dashboards, alerting, event sourcing application, data warehousing, and offline analytics capabilities.

Entscheidend ist, dass Sie Ihr System in kombinierbaren Mustern entwerfen, damit jedes Subsystem unabhängig erstellt, getestet, aktualisiert und wiederhergestellt werden kann.The key is to design your system in composable patterns, so each subsystem can be built, tested, upgraded, and recover independently.

Nächste SchritteNext steps

Sie haben jetzt eine Vielzahl von Lösungsmustern mit Azure Stream Analytics kennengelernt.You now have seen a variety of solution patterns using Azure Stream Analytics. Nun können Sie tiefer einsteigen und Ihren ersten Stream Analytics-Auftrag erstellen:Next, you can dive deep and create your first Stream Analytics job: