Boris Fresow GE Renewable Energy

„Überwindet der Entwickler die anfängliche Komplexitätshürde, die eine performante Messaginglösung wie Kafka mit einer Serialisierungslösung wie Apache Avro mit sich bringt, so erhält er die Möglichkeit, mit erstaunlich wenig Code ein System zu entwickeln.“

Markus Günther Selbstständig

“ Die Verarbeitung von ungeordneten Massendaten ist eine Paradedisziplin Kafkas.“

Wer schon einmal ganz nah vor einer Windkraftanlage gestanden hat, dem ist die Dimension eines solchen Giganten erst wirklich bewusst. Allerdings verstecken sich neben den gewaltigen Bauteilen auch viele kleine im Inneren eines Windrads: Sensoren zum Beispiel. Jeder einzelne von ihnen, ob Drehzahl- oder Schwingungsensor, produziert ständig Daten. Zusammen wird aus den Informationen eine wahre Datenflut. Mithilfe von Spring Kafka lassen sich die Daten im großen Stil verarbeiten.

Alleine in Deutschland sind mehr als 28 000 Windkraftanlagen installiert, die zusammen jährlich über 80 Terawattstunden Energie erzeugen. Neben der enormen Energiemenge produzieren diese Anlagen zunehmend auch enorme Datenmengen. An deren zeitnaher Auswertung sind sowohl die Betreiber eines Windparks als auch die Hersteller der installierten Turbinen sehr interessiert. Gesammelt und übermittelt werden in unserem Beispiel mit den Windrädern Informationen wie in regelmäßigen Intervallen aktuelle Umweltbedingungen, die mittlere Windgeschwindigkeit oder die mittlere Temperatur über ein Zeitintervall, aber auch eventbasierte Daten.

Artikelserie

  • Teil 1: Eventgestützte Applikationen mit Spring for Apache Kafka
  • Teil 2: Beispiel zur Massendatenverarbeitung mit Spring Kafka
  • Teil 3: Spring Kafka als Messaginglösung

Eventbasierte Daten fallen an, wenn die Steuerungselektronik auf interne oder externe Ereignisse und Fehlerfälle reagieren muss. Im Folgenden werden wir ein stark vereinfachtes Daten- und Anwendungsmodell vorstellen, das aufzeigt, wie Daten von Sensoren nach Kafka zur dauerhaften Ablage geschrieben und wieder ausgelesen werden können. Abbildung 1 zeigt einen groben Systemüberblick für unser Beispiel.

Abb. 1: Stark vereinfachtes Daten- und Anwendungsmodell

Abb. 1: Stark vereinfachtes Daten- und Anwendungsmodell

Die Sensoren der Windkraftanlagen generieren konstant Messwerte, die sowohl Auskunft über den Zustand der Anlage sowie über die Umweltbedingungen liefern. Diese Werte lassen sich noch innerhalb der Anlage über einen kurzen Zeitraum aggregieren, um dann eine Metrik für ein Zeitintervall zu liefern. Dieser Statusbericht wird über eine HTTP-Verbindung an ein System übermittelt, das die Daten aufbereitet (Formatkonvertierungen, Deduplizierung) und dann publiziert. Jeder eingehende Statusbericht verfügt über einen Unix-Zeitstempel, der den Zeitpunkt der Berichterstellung angibt (Eventzeit). Als Ordnungskriterium für konsumierende Applikationen ist das völlig ausreichend, sodass eingehende Statusberichte out of order in das Topic geschrieben werden dürfen. Das passt gut zu der zusätzlichen Anforderung, die eingehenden Daten möglichst zeitnah in das Zieltopic zu schreiben: Der Publisher kann eingehende Daten beliebig in Batches organisieren, ohne auf die Sortierung nach Eventzeit zu achten, und muss sich nicht um Transaktionsklammern kümmern.

Für das Kafka Topic halten wir lediglich fest, dass wir mehrere Partitionen benutzen wollen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 2.18 - "Reaktive Programmierung"

Alle Infos zum Heft
579824025Massendatenverarbeitung mit Spring Kafka
X
- Gib Deinen Standort ein -
- or -