Data-Streaming-Plattformen

Die wichtigsten Anbieter und Services

04.03.2022
Von 
Martin Heller schreibt als freier Autor für die Schwesterpublikation InfoWorld.
Data-Streaming-Plattformen sind im Datenzeitalter essenziell. Wir zeigen Ihnen die wichtigsten Anbieter und Lösungen – und worauf Sie bei der Auswahl achten sollten.
Bei der Wahl der richtigen Data-Streaming-Plattform sollten Unternehmen einige Dinge beachten.
Bei der Wahl der richtigen Data-Streaming-Plattform sollten Unternehmen einige Dinge beachten.
Foto: easyease - shutterstock.com

Streaming-Daten werden kontinuierlich erzeugt, oft von Tausenden von Datenquellen - beispielsweise Sensoren oder Serverprotokollen. Die beim Streaming erzeugten Datensätze sind oft sehr klein (in der Regel nur ein paar Kilobyte pro Satz), aber es gibt viele davon und sie werden fortlaufend aggregiert.

Dieser Artikel beschäftigt sich damit, wie Data-Streaming-Plattformen funktionieren, welche Anwendungsfälle dafür in Betracht kommen und welche Kriterien Sie bei der Auswahl anlegen sollten. Natürlich haben wir darüber hinaus auch die wichtigsten Anbieter und Services im Bereich Data Streaming für Sie zusammengetragen.

Data-Streaming-Plattformen: Funktionsweise

Daten-Ingestion und -export

Im Allgemeinen werden sowohl die Datenaufnahme als auch der Datenexport über Konnektoren abgewickelt, die auf Fremdsysteme spezialisiert sind. In einigen Fällen gibt es einen ETL- oder ELT-Prozess, um die Daten neu zu ordnen, zu bereinigen und für den Bestimmungsort aufzubereiten. Bei der Aufnahme von Streaming-Daten werden häufig Daten gelesen, die aus mehreren Quellen stammen. Der Export der Daten erfolgt manchmal in ein Data Warehouse oder einen Data Lake für tiefgehende Analysen und maschinelles Lernen.

Pub/Sub-Modell und Themen

Viele Data-Streaming-Plattformen wie Apache Kafka und Apache Pulsar implementieren ein Publish-and-Subscribe-Modell, bei dem die Daten in Topics organisiert sind. Eingespeiste Daten können mit einem oder mehreren Themen gekennzeichnet werden, so dass Clients, die eines dieser Themen abonniert haben, die Daten empfangen können.

Data Analytics

Plattformen für das Daten-Streaming bieten in der Regel die Möglichkeit, Analysen an zwei Stellen der Pipeline zu fahren: Der erste Punkt ist Teil des Echtzeitdatenstroms, der zweite befindet sich an einem persistenten Endpunkt. Apache Kafka verfügt beispielsweise über einfache Echtzeit-Analysefunktionen in seiner Streams-API und kann für komplexere Echtzeitberechnungen auch Apache Samza oder einen anderen Analyseprozessor aufrufen. Sobald die Daten in einem persistenten Datenspeicher abgelegt wurden, entstehen zusätzliche Möglichkeiten für Analytics und Machine Learning. Diese Verarbeitung kann nahezu in Echtzeit oder als regelmäßiger Batch-Prozess erfolgen.

Serverless-Funktionen wie AWS Lambda können genutzt werden, um Streaming-Datensätze mit benutzerdefinierten Programmen zu analysieren. Sie bieten eine Alternative zu Stream-Analytics-Prozessoren wie Apache Flink.

Clustering

Data-Streaming-Plattformen sind selten Einzelinstanzen, außer bei Entwicklungs- und Testinstallationen. Produktionsfähige Streaming-Plattformen müssen skaliert werden, weswegen sie in der Regel als Cluster betrieben werden. Eine Möglichkeit, das für Cloud-Event-Streaming zu implementieren, ist eine Serverless-Elastic-Plattform wie Confluent Cloud.

Daten streamen: Anwendungsfälle

Die Open-Source-Dokumentation von Kafka führt folgende Use Cases für Data Streaming an:

  • Zahlungen und Finanztransaktionen in Echtzeit verarbeiten, zum Beispiel an Börsen, bei Banken und Versicherungen.

  • Fahrzeuge, Güter oder Sendungen in Echtzeit verfolgen und überwachen, etwa in der Logistik oder der Automobilindustrie.

  • Sensordaten von IoT-Geräten oder Anlagen (etwa Fabriken oder Windparks) kontinuierlich erfassen und analysieren.

  • Kundeninteraktionen erfassen und sofort darauf reagieren, zum Beispiel im Einzelhandel, in der Hotel- und Reisebranche oder bei mobilen Anwendungen.

  • Patienten in Krankenhäusern und Kliniken überwachen und Vorhersagen über Zustandsveränderungen treffen, etwa um in Notfällen eine rechtzeitige Behandlung sicherzustellen.

  • Daten, die von den verschiedenen Abteilungen eines Unternehmens produziert werden, miteinander verbinden, speichern und bereitstellen.

  • Als Grundlage für Datenplattformen, ereignisgesteuerte Architekturen und Microservices.

Data Streaming Platforms: Auswahlkriterien

Die wichtigsten Leistungsindikatoren (KPIs) für Data-Streaming-Plattformen sind:

  • Ereignisrate,

  • Durchsatz (Ereignisrate mal Ereignisgröße),

  • Latenz,

  • Zuverlässigkeit und

  • die Anzahl der Themen (bei Pub-Sub-Architekturen).

Indem Knoten zu einer geclusterten Geometrie hinzugefügt werden, kann einerseits die Zuverlässigkeit erhöhen werden, andererseits ermöglicht dies, die Plattformen zu skalieren. Im Fall von Serverless-Plattformen erfolgt die Skalierung automatisch. Nicht alle Data-Streaming-Plattformen werden zwangsläufig alle Ihre KPIs erfüllen.

Die Unterstützung von Client-Programmiersprachen kann ein Unterscheidungsmerkmal zwischen Plattformen zum Daten-Streaming sein. Beim quelloffenen Apache Kafka haben Sie beispielsweise die Wahl, die Streams-API von Java oder Scala (beides JVM-Sprachen) aufzurufen. Es gibt jedoch auch ein Community-Projekt namens librdkafka, das andere Sprachen für Clients unterstützt - darunter C/C++, Go, .NET und Python. Confluent unterhält seinen eigenen offiziellen, signierten Satz von Binärdateien für librdkafka.

Im Gegensatz dazu wurde Apache Storm von Grund auf so konzipiert, dass es über den sprachübergreifenden Compiler Apache Thrift mit jeder Programmiersprache verwendet werden kann. Apache Pulsar unterstützt Clients in Java, Go, Python, C++, Node.js, WebSocket und C#. Die Amazon Kinesis Streams API unterstützt alle Sprachen, für die es ein Amazon SDK oder CDK gibt: Java, JavaScript, .NET, PHP, Python, Ruby, Go, C++ und Swift.

Auch Connection Support kann ein weiteres Unterscheidungsmerkmal darstellen. Idealerweise sollten Konnektoren für all Ihre Datenquellen bereits verfügbar und getestet sein. Confluent listet beispielsweise über 120 verfügbare Konnektoren für Kafka auf. Die Liste von Confluent enthält von der Community entwickelte Konnektoren. Wenn Sie Ihre eigenen Kafka-Konnektoren in Java schreiben müssen, können Sie die Kafka Connect API verwenden.

Bei der Entscheidung, wo Sie Ihre Streaming-Data-Plattform hosten wollen, müssen Sie die Standorte Ihrer Datenquellen und -senken berücksichtigen. Im Allgemeinen möchten Sie die Latenz des Datenstroms minimieren, die Komponenten sollten also nahe beieinander liegen. Andererseits unterstützen einige Data-Streaming-Plattformen geografisch verteilte Cluster, die die Latenz für weit entfernte Quellen verringern können.

Darüber hinaus sollten Sie auch die Manageability der in Frage kommenden Streaming-Plattformen berücksichtigen. Einige stehen im Ruf, ohne Spezialkenntnisse schwer zu konfigurieren und zu warten zu sein.

Data-Streaming-Plattformen: Anbieter & Services

Amazon Kinesis

Streaming-Daten in Echtzeit und in großem Umfang zu sammeln, zu verarbeiten und zu analysieren, ist mit Amazon Kinesis möglich. Es gibt drei Services für Daten (Data Streams, Data Firehose und Data Analytics) und einen für Medien (Video Streams).

  • Kinesis Data Streams ist ein Ingestion-Service, der kontinuierlich Gigabytes von Daten pro Sekunde aus Tausenden von Quellen erfassen kann.

  • Kinesis Data Firehose kann Datenströme erfassen, umwandeln und in AWS-Datenspeicher laden, um mit vorhandenen Business-Intelligence-Tools Analysen nahezu in Echtzeit durchzuführen.

  • Kinesis Data Analytics kann Datenströme in Echtzeit mit SQL oder Apache Flink verarbeiten. Wenn Sie den Stream mit einem Programm verarbeiten möchten, anstatt SQL oder Flink zu verwenden, können Sie sie stattdessen die Serverless-Funktionen von AWS Lambda verwenden.

Apache Flink

Das quelloffene Java/Scala/Python-Framework Apache Flink ist eine verteilte Verarbeitungs-Engine für zustandsabhängige Berechnungen über unbeschränkte und beschränkte Datenströme. Flink wurde entwickelt, um in allen gängigen Cluster-Umgebungen Berechnungen mit In-Memory-Geschwindigkeit und in beliebigem Umfang durchzuführen. Flink lässt sich in gängige Cluster-Ressourcenmanager wie Hadoop YARN, Apache Mesos und Kubernetes integrieren, kann aber auch als eigenständiges Cluster betrieben werden.

Apache Kafka

Ursprünglich bei LinkedIn entwickelt, vereint Apache Kafka derzeit den größten Marktanteil im Bereich Event-Streaming auf sich - inklusive der kommerziellen Confluent-Version. Kafka ist eine quelloffene, verteilte Java/Scala-Ereignis-Streaming-Plattform für Hochleistungs-Datenpipelines, Streaming-Analysen, Datenintegration und unternehmenskritische Anwendungen. Kafka-Ereignisse werden in Topics organisiert und dauerhaft gespeichert. Dabei weist Kafka fünf Kern-APIs auf:

  • Die Admin-API, um Topics, Broker und andere Kafka-Objekte zu managen und zu inspizieren.

  • Die Producer-API, um einen Event-Stream in einem oder mehreren Topics zu veröffentlichen (Write).

  • Die Consumer-API, um eines oder mehrere Topics zu abonnieren (Read) den für sie produzierten Event Stream zu produzieren.

  • Die Kafka-Streams-API, um Stream-Verarbeitungsanwendungen und Microservices zu implementieren. Diese Schnittstelle bietet Funktionen auf höherer Ebene, um Event Streams zu verarbeiten, einschließlich Transformationen, zustandsbehafteter Operationen wie Aggregationen und Joins, Windowing, Verarbeitung auf Basis der Ereigniszeit und mehr. Input wird aus einem oder mehreren Topics gelesen, um entsprechenden Output zu generieren, wobei die Input Streams effektiv in Output Streams umgewandelt werden.

  • Die Kafka Connect-API, um wiederverwendbare Datenimport-/Export-Konnektoren zu erstellen und auszuführen, die Event Streams von und zu externen Systemen und Anwendungen konsumieren (lesen) oder produzieren (schreiben), so dass sie in Kafka integriert werden können. Ein Konnektor zu einer relationalen Datenbank wie PostgreSQL könnte zum Beispiel jede Änderung an einer Reihe von Tabellen erfassen. In der Praxis müssen Sie jedoch in der Regel keine eigenen Konnektoren implementieren, da über die Kafka-Community Hunderte gebrauchsfertiger Konnektoren bereitstehen.

Apache Pulsar

Ursprünglich bei Yahoo entwickelt, ist Apache Pulsar eine quelloffene, Cloud-native, verteilte Java/C++/Python Pub-Sub-Messaging- und Streaming-Plattform. Ihre Funktionen umfassen:

Native Unterstützung für mehrere Cluster in einer Pulsar-Instanz, mit nahtloser geografischer Replikation von Nachrichten über Cluster hinweg.

  • Niedrige Veröffentlichungs- und End-to-End-Latenzzeiten.

  • Nahtlose Skalierbarkeit auf über eine Million Topics.

  • Eine simple Client-API mit Anbindungsmöglichkeiten für Java, Go, Python und C++.

  • Mehrere Subscription Modes für Topics.

  • Garantierte Nachrichtenzustellung mit persistenter Nachrichtenspeicherung durch Apache BookKeeper.

  • Ein Serverless-Computing-Framework für stream-native Datenverarbeitung - Pulsar Functions.

  • Das Serverless Connector Framework Pulsar IO, das auf Pulsar Functions basiert und es erleichtert Daten in und aus Apache Pulsar zu verschieben.

  • Ein Tiered-Storage-Konzept, das Daten von Hot/Warm Storage auf Cold/Langzeitspeicher (wie Amazon S3 und Google Cloud Storage) verlagert, wenn die Daten veralten.

Apache Samza

Das verteilte Open-Source-Framework Apache Samza wurde für die Stream-Verarbeitung in Scala/Java entwickelt. Mit Samza können Sie zustandsbehaftete Anwendungen erstellen, die Daten in Echtzeit aus mehreren Quellen (einschließlich Apache Kafka) verarbeiten. Zu den Merkmalen von Samza gehören:

  • Vereinheitlichte API: Eine einfache API, um die Anwendungslogik zu beschreiben, unabhängig von der Datenquelle. Die gleiche Schnittstelle kann sowohl Batch- als auch Streaming-Daten verarbeiten.

  • Pluggability: Verarbeiten und transformieren Sie Daten aus beliebigen Quellen. Samza bietet Integrationen mit Apache Kafka, AWS Kinesis, Azure Event Hubs (Azure-natives Kafka as a Service), Elasticsearch und Apache Hadoop. Auch die Integration mit eigenen Quellen ist recht einfach.

  • Embedded Library: Wenn Sie Samza in Ihre bestehenden Anwendungen integrieren, können Sie darauf verzichten, ein separates Cluster für die Stream-Verarbeitung einzurichten und zu betreiben: Samza kann als leichtgewichtige Client-Bibliothek verwendet werden, die in Java/Scala-Anwendungen eingebettet ist.

  • Einmal schreiben, überall ausführen: Flexible Bereitstellungsoptionen, um Anwendungen überall auszuführen - von öffentlichen Clouds über containerisierte Umgebungen bis hin zu Bare-Metal-Hardware.

  • Managed Service: Führen Sie die Stream-Verarbeitung als verwalteten Dienst aus, indem Sie sie in gängige Cluster-Manager wie Apache YARN integrieren.

  • Fehlertoleranz: Kommt es zu Ausfällen, werden Aufgaben (inklusive Status) transparent migriert. Um eine schnelle Wiederherstellung sicherzustellen, unterstützt Samza Host-Affinität und inkrementellles Checkpointing.

  • Skalierbarkeit: Samza ist gefechtserprobt mit Anwendungen, die mehrere Terabyte an Status verwenden und auf Tausenden von Kernen laufen: Die Lösung kommt bei mehreren großen Unternehmen zum Einsatz - beispielsweise LinkedIn, Uber, TripAdvisor und Slack.

Apache Spark

Apache Spark ist eine mehrsprachige, hauptsächlich in Scala geschriebene Engine für Data Engineering, Data Science und maschinelles Lernen auf Einzelknoten oder Clustern. Es verarbeitet sowohl Batch- als auch Echtzeit-Streaming-Daten. Spark wurde an der U.C. Berkeley entwickelt, die Macher gründeten später das Unternehmen Databricks.

Apache Storm

Das verteilte Stream-Processing-Computing-Framework Apache Storm wurde hauptsächlich in Clojure geschrieben. In Storm ist ein Stream eine unbegrenzte Abfolge von "Tuples", die parallel verteilt verarbeitet und erstellt wird. Storm lässt sich mit vielen anderen Systemen und Bibliotheken integrieren, darunter Kafka, Cassandra, Redis und Kinesis.

Azure Stream Analytics

Die Echtzeit-Analyse- und Event-Processing-Engine Azure Stream Analytics ist für die Verarbeitung großer Streaming-Datenmengen aus mehreren Quellen konzipiert. Muster und Beziehungen können in Informationen identifiziert werden, die aus einer Reihe von Eingabequellen wie Geräten, Sensoren, Clickstreams, Social Media Feeds und Anwendungen extrahiert wurden. Diese Muster lassen sich zum Beispiel dazu verwenden, Aktionen und Workflows zu initiieren, also etwa eine Warnmeldung erstellen, Informationen in ein Reporting-Tool einspeisen oder umgewandelte Daten zur späteren Verwendung speichern.

Confluent-Plattform und Cloud

Confluent Platform ist eine kommerzielle Anpassung von Apache Kafka durch die ursprünglichen Schöpfer von Kafka, die On-Premises und in der Cloud angeboten wird. Confluent Cloud wurde von Grund auf als Service entwickelt, der die Eigenschaften Serverless, Elastisch, Fully Managed und Cloud-native in sich vereint. Confluent läuft auf AWS, Microsoft Azure und Google Cloud.

Google Cloud Dataflow

Der vollständig verwaltete, serverless Stream- und Batch-Datenverarbeitungsservice Google Cloud Dataflow basiert auf Apache Beam. Letzteres ist ein vereinheitlichtes SDK (ursprünglich von Google entwickelt) für Dataflow, Flink, Spark und Hazelcast Jet.

Ververica

Die Stream-Processing-Plattform Ververica stammt von den ursprünglichen Entwicklern von Apache Flink. Die Plattform bietet Multi-Tenancy, Authentifizierung, rollenbasierte Zugriffskontrolle und automatische Skalierung für Apache Flink. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.