Event Stream Processing
IoT-Anwendungen: Sieben Gründe für den Einsatz von Event Stream Processing
Mehr Geschwindigkeit und Effizienz
Das Internet der Dinge (Internet of Things, IoT) ist in Sachen Datenverarbeitung eine Herausforderung für die IT-Industrie und Unternehmen, die das IoT nutzen bzw. IoT-Services und entsprechende Produkte anbieten. Dazu tragen nach Angaben von data Artisans, einem Software-Startup aus Berlin, im wesentlichen drei Aspekte bei:
- Von Geräten werden viel mehr Daten produziert als von Benutzern. Herkömmliche Datenbanken sind für den Umgang mit Daten, die kontinuierlich in großer Menge von Edge-Geräten erzeugt werden (z.B. „Dinge“ im IoT), ineffizient und unpraktikabel.
- IoT-Anwender erwarten Echtzeit-Informationen und Services, die sofort auf ihre Anfragen reagieren. Klassische Batch-Datenoperationen sind nicht für Echtzeit-Reaktionen geeignet.
- Die Konnektivität ist in der IoT-Industrie nie gewährleistet. Dies gilt insbesondere, wenn Daten von Edge-Geräten über Mobilfunknetze gesendet werden.
Freeport Metrics hat an mehreren Data-Streaming-Projekten in der IoT-Branche gearbeitet und hierbei Apache Flink als zugrundeliegendes Event Stream-Processing-Framework genutzt. Jakub Piasecki, Director of Technology bei Freeport Metrics, nennt sieben Gründe, warum seiner Meinung nach Stream Processing mit Apache Flink im Internet der Dinge zukünftig ein Muss ist:
1. Echtzeit-Datenverarbeitung ist ein entscheidender Faktor
Die IoT-Industrie verlangt sofortige Informationen und Maßnahmen bei jeder Aktivität. Stelle man sich zum Beispiel eine Situation vor, in der es draußen windig ist, aber die Windturbine keine Energie produziert. Der Energieversorger muss diese Information sofort bekommen, um sie in Echtzeit auszuwerten und Aktionen Anhand von Algorithmen unmittelbar auslösen zu können.
Der Betrieb mit Echtzeit Datenströmen anstelle von periodisch übertragenen Datensätzen verändert das Programmierparadigma dabei grundlegend und ermöglicht es, Berechnungen sofort bei Verfügbarkeit von Daten auszulösen, zeitnahe Warnungen auszulösen oder Ereignismuster kontinuierlich zu erkennen.
Darüber hinaus kann die Verarbeitung der erzeugten Daten in einigen Fällen optimal für die Performance sein. So sind beispielsweise keine Berechnungen erforderlich, wenn kein neues Ereignis eingetreten ist, was bedeutet, dass nicht der gesamte Datensatz regelmäßig neu berechnet werden muss, um neue Ergebnisse zu erhalten.
2. Die Ereigniszeit ist entscheidend bei der Datenbestellung in der IoT-Industrie
Wenn Daten von Geräten durch ein Mobilfunknetz übertragen werden, ist es wichtig, Latenzzeiten und Netzwerkausfälle zu berücksichtigen. Selbst wenn über eine stabilere Verbindung gesendet wird, lassen sich die Gesetze der Physik nicht umgehen, und die Entfernung der IoT-Geräte vom Rechenzentrum erhöht zwangsläufig die Latenzzeit.
Als Beispiel stelle man sich Maschinen- oder Automobilteile vor, die sich durch eine Produktionslinie mit daran angeschlossenen Sensoren bewegen. Es gibt keine Garantie dafür, dass die Messwerte dieser Sensoren in der Reihenfolge ihrer Erfassung über das Netzwerk ankommen.
Meistens ist es beim Umgang mit Daten von IoT-Geräten sinnvoll, bestellte Ereignisse nach dem Zeitpunkt ihres Auftretens (Ereigniszeit) und nicht nach dem Zeitpunkt ihrer Ankunft im Rechenzentrum oder nach der Verarbeitung (Aufnahme- bzw. Verarbeitungszeit) zu verarbeiten. Aus diesem Grund ist die Unterstützung der Ereigniszeit ein Muss bei der Auswahl eines Datenverarbeitungs-Frameworks.
3. Werkzeuge für den Umgang mit unordentlichen Daten
Die Datenvorverarbeitung am Edge ist in der Regel der härteste Teil des Prozesses. Es ist noch schwieriger, wenn man die Quelle nicht vollständig kontrolliert, wie es in der IoT-Welt oft der Fall ist. Dies kann in einen erheblichen Anteil an Reinigungscode mit komplexer Logik resultieren.
Die Event Stream-Verarbeitung bietet einige nützliche Tools. Eines der nützlichsten Werkzeuge ist das Windowing, ein Konzept, bei dem die Elemente eines unbegrenzten Stroms für die weitere Verarbeitung in endliche Mengen gruppiert werden, basierend auf Dimensionen wie Zeit oder Elementanzahl.
Allerdings ist es manchmal nicht einfach möglich zu sagen, ob alle Daten angekommen sind. In diesem Fall würde man ein Fenster entsprechend einem heuristischen Watermark auslösen, das empirisch berechnet werden kann oder von einem abgelaufenen Timeout ausgehen. Apache Flink ermöglicht es auch, die zulässige Verspätung von Elementen festzulegen und stellt Seitenausgänge zur Verfügung, um später auftretende Ereignisse zu behandeln.
4. Segmentierung ermöglicht Parallelverarbeitung
Häufig sind verschiedene Benutzer eines IoT-Systems an Berechnungen interessiert, die nur an einer Teilmenge von Daten durchgeführt werden. Man denke an eine Plattform, die es Katzenbesitzern ermöglicht, zu sehen, wo ihre Haustiere gerade unterwegs sind. Jeder Besitzer benötigt nur Daten vom GPS-Tracker seiner eigenen Katze.
Apache Flink stellt zu diesem Zweck das Konzept der Gruppierung nach Schlüsselwerten vor. Sobald ein Stream partitioniert ist, kann er parallel verarbeitet werden, so dass Sie ihn horizontal vergrößern können. Natürlich muss ein Schlüsselwert nicht an ein einzelnes IoT-Gerät oder einen Standort gebunden sein. Im Falle des Flottenmanagements lassen sich beispielsweise verschiedene Signale, die sich auf ein einzelnes Fahrzeug beziehen, gruppieren (z.B. GPS, Hardwaresensoren, Kennzeichenerfassung etc.).
5. Der lokale Zustand ist entscheidend für die Performance
Während jeder Programmierer wissen sollte, dass sich die Latenzzahlen aufgrund von Fortschritten in Hardware und Infrastruktur jedes Jahr ändern, bleiben einige Grundregeln konstant:
- Je näher die Daten liegen, desto schneller können sie bearbeitet werden.
- Netzwerk-I/O ist nicht gut für die Performance.
Mit Apache Flink lassen sich Daten genau dort aufbewahren, wo Berechnungen mit dem lokalen Zustand durchgeführt werden. Noch wichtiger ist, dass der Zustand einer Anwendung durch einen effizienten Checkpointing-Mechanismus im Fehlerfall wieder konsistent hergestellt werden kann.
6. Flink ist ideal für Messaging
Wenn man an Event Streaming denkt, spielen sehr oft auch Messaging-Systeme wie Apache Kafka, AWS Kinesis oder RabbitMQ eine Rolle. Diese sind hoch skalierbar und zuverlässig für die Aufnahme großer Mengen von Ereignissen. Apache Flink bietet erstklassigen Support für alle drei Messagingsysteme, sowohl als Produzenten als auch als Konsumenten. Gleichzeitig unterstützt seine verteilte Architektur leistungssteigernde Funktionen wie Partitionierung oder Sharding. Die konsistente End-to-End-Verarbeitung wird auch von Flink auf diese Systeme ausgedehnt, wenn der Anwendungsfall es erfordert.
7. Event Stream Processing ist konzeptionell einfach
Wenn Unternehmen eine Event Streaming-Architektur für ihre IoT Anwendungen wählen, können sie sich meist nach einer sehr kurzen Eingewöhnungsphase, auf die Kernlogik Ihrer Anwendung konzentrieren. Der Großteil der „groben“ Arbeit wird vom Framework für sie erledigt.
„Die Beobachtungen von Freeport Metrics sind aus meiner Sicht überzeugende Argumente, die dafür sprechen, dass die Datenverarbeitung in der IoT-Industrie von der Einführung eines Stream-Processing-Frameworks wie Apache Flink profitieren kann“, erklärt Fabian Hueske, Co-Founder bei data Artisans aus Berlin. „Die Funktionen, Konnektoren, Fehlertoleranz, Skalierbarkeit und Zuverlässigkeit von Apache Flink bilden eine ausgezeichnetes Gerüst, um die Herausforderungen zu meistern, mit denen IoT-Unternehmen konfrontiert sind, wenn sie mit der riesigen Menge an Daten umgehen, die sie jeden Tag, jede Minute oder Sekunde verarbeiten.“