Streaming mitApache Kafka - JUG Saxony Day · Streaming mit Apache Kafka Kafka: The Definitive...

Post on 03-Jun-2020

25 views 0 download

Transcript of Streaming mitApache Kafka - JUG Saxony Day · Streaming mit Apache Kafka Kafka: The Definitive...

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: thomas.mueller@diva-e.com§ 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