Hazelcast Jet unterstützt Event-Time Processing

Hazelcasts System zur Verarbeitung paralleler Datenströme ist auf datenintensive Anwendungen ausgelegt und ist nun in Version 0.4 mit Features zur Event-Zeit-Verarbeitung erschienen.

In Pocket speichern vorlesen Druckansicht
Hazelcast Jet unterstützt Event-Time Processing
Lesezeit: 2 Min.
Von
  • Alexander Neumann
  • Rainald Menge-Sonnentag

Hazelcast ist vor allem für das gleichnamige In-Memory Data Grid bekannt, das Daten flexibel auf Cluster verteilt und so den schnellen Zugriff ermöglicht. Doch seit kurzem gibt es mit Hazelcast Jet ein System zur Verarbeitung paralleler Datenströme, das Batch-Daten und Datenströme gleichermaßen verarbeitet. Die nun freigegebene Version 0.4 umfasst mehrere neue Features, darunter die Event-Zeit-Verarbeitung mit sogenanntem Tumbling/Sliding/Session Windowing.

Die neue Fensterfunktion ermöglicht es Benutzern, Stream-Processing-Jobs in regelmäßigen Zeitintervallen zu bewerten, unabhängig davon, wie viele eingehende Nachrichten im Job verarbeitet werden. Die neue Version bietet drei Arten des Windowing:

  • fixed/tumbling: Hier wird in gleich lange, nicht überlappende Stücke aufgeteilt, und jedes Ereignis gehört zu genau einem Fenster;
  • sliding: Fenster haben eine feste Länge, aber sind durch ein Zeitintervall getrennt, das kleiner sein kann als die Fensterlänge;
  • session: Fenster haben verschiedene Größen und werden auf der Grundlage von Daten der Session-Identifizierer definiert.

Hazelcast ist der Ansicht, dass diese neuen Features Entwicklern helfen, die mit IoT-Architekturen arbeiten, die Sensor-Updates erfordern, also Dinge wie Hausthermostate und Beleuchtungssysteme, aber auch E-Commerce-Systeme und Social-Media-Plattformen sollen davon profitieren können.

Das System setzt auf eine Pipeline in Form sogenannter gerichteter, azyklischer Graphen. Generatoren verarbeiten die eingehenden Daten und verteilen sie an Akkumulatoren. Anschließend folgt die Zusammenführung in Combiners, die das Ergebnis zum gewünschten Output liefern. Die ersten Verarbeitungsschritte erfolgen jeweils innerhalb eines Knotens, aber für die Zusammenführung geht JET über die Knotengrenzen hinaus.

Als Vorteil gegenüber anderen Systemen zur Verarbeitung von Datenströmen wird die One-record-per-time-Architektur hervorgehoben, die Datensätze direkt verarbeitet und auf Micro Batches, wie sie auch Apache Spark verwendet, und die verteilten Snapshots von Apache Flink verzichtet. Dadurch soll Jet die Verzögerung minimieren und nahezu in Echtzeit arbeiten.

Das soll vor allem Anwendungen im Bereich Internet der Dinge und Fraud Detection (Betrugserkennung) begünstigen. Gleichzeitig ist Jet auf Microservices optimiert, in die es sich als eingebettetes System integrieren lässt. Wie das Data Grid setzt Jet auf Java und verwendet für verteilte Datenströme die Stream API aus Java 8.

JET ist unter der Apache-2-Lizenz quelloffen auf GitHub verfügbar. (ane)