streaming mitapache kafka - jug saxony day · streaming mit apache kafka kafka: the definitive...
TRANSCRIPT
Ein Einstieg in das Stream Processing mit Kafka Streams DSL und KSQL
Streaming mit Apache Kafka
Über mich
Über mich
Streaming mit Apache Kafka
Thomas Müller
§ Senior Software-Developer im Bereich Java-Backend-Systeme bei diva-e
§ Lieblings-Spielplätze: Apache Kafka, Hazelcast, Spring-Boot-Applikationen
§ Email: [email protected]§ Twitter: @zaroselectro
@zaroselectro
Agenda
Streaming mit Apache Kafka
§ Message Broker/Kafka Basics§ Stream Processing in der Theorie§ Showcase mit Kafka Streaming API und KSQL
Die Welt der Daten
Die Welt der Daten
Streaming mit Apache Kafka
Zuverlässige Informationen sind unbedingt nötig für das Gelingen eines Unternehmens.Christoph Kolumbus (1451 - 1506)
@zaroselectro
Die Welt der Daten
Streaming mit Apache Kafka
RDBMS
HadoopCluster
DataSource
DataSource
DataSource
RDBMS
HadoopCluster
Real-TimeProcessing
DataSource
DataSource
DataSource
DataSource
DataSource
DataSource
@zaroselectro
Die Welt der Daten
Streaming mit Apache Kafka
[Bildquelle: © confluent.io]@zaroselectro
Message Broker
Message Broker
Streaming mit Apache Kafka
Message Broker
Producer
Producer
Producer
Producer
Consumer
Consumer
Consumer
@zaroselectro
Message Broker
Streaming mit Apache Kafka
§ Middle-Ware zum Empfang und Versand von Nachrichten§ Dient als Datenpipeline§ Lose Kopplung der Systeme
§ Verarbeitung unterschiedlichster Arten von Nachrichten• Informationen von Sensoren• Transaktionen vom Börsenhandel• Bestellungen eines Shop-Systems• Transaction-Log einer Datenbank• Logfiles einer Webanwendung• etc.
§ Kommunikation: Publish-Subscribe oder Point-To-Point
@zaroselectro
Publish-Subscribe
Streaming mit Apache Kafka
TopicProducer
Consumer
Consumer
Consumer
MSG 1
MSG 1
MSG 1
MSG 1M
SG 1
Subscribe
Subscribe
Subscribe
@zaroselectro
Point-To-Point
Streaming mit Apache Kafka
QueueProducer
Consumer
Consumer
Consumer
MSG 1
MSG 2
MSG 3M
SG 1
MSG
2
MSG
3
MSG
1
MSG
2
MSG
3
@zaroselectro
Kafka Basics
Warum Kafka
Streaming mit Apache Kafka
Vorteile
§ Sehr hoher Datendurchsatz§ Exzellente Skalierbarkeit§ Redundanz§ Vorhaltung der Nachrichten§ Unterstützung Batch- als auch Real-Time-Verarbeitung der Messages
Abgrenzung zu anderen Message Brokern
§ Apache Kafka wurde von Anfang an für den Cluster-Betrieb entwickelt§ Nachrichten werden nicht gelöscht, wenn sie zugestellt wurden§ Nachrichten sind wieder abspielbar
@zaroselectro
Kafka Streams
Streaming mit Apache Kafka
§ Nachrichten werden nicht nur von Producer zu Customer weitergereicht§ On-The-Fly-Weiterverarbeitung von Nachrichten§ Ergebnisse des Streamings werden in Topics geschrieben§ Stream API ist eine eigenständige Java-Library
@zaroselectro
Kafka Streams
Streaming mit Apache Kafka
App Instanz 1
Kafka Streams API
App Instanz 2
Kafka Streams API
App Instanz 3
Kafka Streams API
Kafka Cluster
@zaroselectro
Stream Processing in der Theorie
Prozessor Topologien
Streaming mit Apache Kafka
§ Stream Processors§ Source Processors§ Sink Processors
SourceProcessor
StreamProcessor
SinkProcessor
Stream
@zaroselectro
DSL
Kafka Streams
Streaming mit Apache Kafka
Kafka Stream DSL (Domain Specific Language)
§ https://docs.confluent.io/current/streams/developer-guide/dsl-api.html
§ Empfohlen für die meisten Anwendungsfälle
§ Business-Logik kann oft mit ein paar Zeilen Code abgebildet werden
§ Kapselung der Stream-Processing-Komplexität
API KSQL
Kafka Processor API§ Der Low-Level Weg, um Stream-
Processing mit Topologien aufzubauen
§ Bietet mehr Flexibilität als Kafka Stream DSL
KSQL§ Streaming mittels SQL-
ähnlicher Syntax
@zaroselectro
KSQL
Streaming mit Apache Kafka
KSQL-Konsole
KSQL Server
REST API Engine
@zaroselectro
Einsatzgebiete von Streaming
Streaming mit Apache Kafka
IoT Bereich Finanzwelt § Aktienhandel
Shop-Systeme§ Recommendations§ Page-Click-Tracking§ Logins
Logfile-Analysen§ Intrusion Detection
@zaroselectro
Showcase mit Kafka Streaming API
Showcase
Streaming mit Apache Kafka
Generator, der zufällige Bestellungen erzeugt
Schrauben-Online-Shop
§ ID§ Liste von Produkten§ User-ID§ Email§ Kreditkartennummer§ Gesamtbetrag
ProductOrder
Alle Bestellungen
Rechnungswesen
Archiv
Marketing
Lagerverwaltung
@zaroselectro
Showcase
Streaming mit Apache Kafka
products_orders
ProductOrderSourceProcessor
MaskingStreamProcessor
StockManagementSinkProcessor
stockmanagement
BillingSinkProcessor
billings
MarketingSinkProcessor
toporders
ArchiveSinkProcessor
archiv
@zaroselectro
Streaming mit Apache Kafka
@zaroselectro
Vielen Dank
Streaming mit Apache Kafka
https://github.com/diva-e/kafka-streaming-talk.git
@zaroselectro
https://github.com/diva-e/kafka-streaming-talk.git
Vielen Dank
Copyright © diva-e
Alle Angaben basieren auf dem derzeitigen Kenntnisstand. Änderungen vorbehalten. Dieses Dokument der diva-e Digital Value Excellence GmbH ist ausschließlich für den Adressaten bzw. Auftraggeber bestimmt. Es bleibt bis zur einer ausdrücklichen Übertragung von Nutzungsrechten Eigentum der diva-e. Jede Bearbeitung, Verwertung, Vervielfältigung und/oder gewerbsmäßige Verbreitung des Werkes ist nur mit Einverständnis von diva-e zulässig.
Stream vs. Table
Streaming mit Apache Kafka
Key Value
key01 value01
Key Value
key01 value01
key02 value02
Key Value
key01 value03
key02 value02
key01 value01
key02 value02
key01 value03
Stream Table
@zaroselectro
Buchtipps
Streaming mit Apache Kafka
Kafka: The Definitive GuideReal-time data and streamprocessing at scale
von Neha Narkhede, Gwen Shapira, Todd Palino
Kafka Streams in Action
von William P. Bejeck Jr.
@zaroselectro
Log Compaction
Copyright © diva-e 31
Präsentationstitel – Kapitel
Offset Key Value
0 K01 V01
1 K02 V02
2 K03 V03
3 K02 V04
4 K04 V05
5 K01 V06
6 K05 V07
Offset Key Value
2 K03 V03
3 K02 V04
4 K04 V05
5 K01 V06
6 K05 V07