Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Für Data Engineers und Data Scientists gibt es immer wieder neue Technologien, die um unsere Aufmerksamkeit buhlen. Egal, ob wir unsere Lieblings-Subreddits durchstöbern, die Hacker News durchforsten, Tech-Blogs lesen oder unsauf einer Tech-Konferenz durch Hunderte von Tischen wühlen - es gibt so viele Dinge, die wir uns ansehen müssen, dass wir uns schnellüberwältigt fühlen können.

Aber wenn wir eine ruhige Ecke finden, in der wir eine Minute nachdenken und den ganzen Trubel in den Hintergrund treten lassen, können wir anfangen, Muster aus dem Lärm zu erkennen. Wir leben im Zeitalter des explosionsartigen Datenwachstums, und viele dieser Technologien wurden entwickelt, um uns bei der Speicherung und Verarbeitung von Daten in großem Umfang zu helfen. Uns wird gesagt, dass dies moderne Lösungen für moderne Probleme sind, und wir sitzen herum und diskutieren über "Big Data", als ob die Idee avantgardistisch wäre, obwohl der Fokus auf die Datenmenge nur die halbe Wahrheit ist.

Technologien, die nur das Problem des Datenvolumens lösen, verwenden in der Regel stapelorientierte Verfahren zur Datenverarbeitung. Dabei wird ein Auftrag auf einem Datenstapel ausgeführt, der sich über einen bestimmten Zeitraum angesammelt hat. In gewisser Weise ist das so, als würde man versuchen, den ganzen Ozean auf einmal zu trinken. Mit moderner Rechenleistung und Paradigmen gelingt dies einigen Technologien tatsächlich, allerdings meist auf Kosten hoher Latenzzeiten.

Stattdessen gibt es eine andere Eigenschaft moderner Daten, auf die wir uns in diesem Buch konzentrieren: Daten bewegen sich in stetigen und nie endenden Strömen über Netzwerke. Die Technologien, die wir in diesem Buch behandeln, Kafka Streams und ksqlDB, wurden speziell dafür entwickelt, diese kontinuierlichen Datenströme in Echtzeit zu verarbeiten, und bieten enorme Wettbewerbsvorteile gegenüber der Ozean trinkenden Variante. Wenn du Daten anreichern, umwandeln oder auf sie reagieren musst, sobald sie eintreffen, dann helfen dir Kafka Streams und ksqlDB dabei, dies mit Leichtigkeit und Effizienz zu erreichen.

Das Erlernen von Kafka Streams und ksqlDB ist auch eine gute Möglichkeit, sich mit den größeren Konzepten der Stream-Verarbeitung vertraut zu machen. Dazu gehören die Modellierung von Daten auf verschiedene Arten (Streams und Tabellen), die Anwendung zustandsloser Transformationen von Daten, die Verwendung lokaler Zustände für fortgeschrittene Operationen (Joins, Aggregationen), das Verständnis der verschiedenen Zeitsemantiken und Methoden zur Gruppierung von Daten in Zeitbereichen/Fenstern und vieles mehr. Mit anderen Worten: Dein Wissen über Kafka Streams und ksqlDB wird dir dabei helfen, verschiedene Stream-Processing-Lösungen zu unterscheiden und zu bewerten, die es derzeit gibt oder die irgendwann in der Zukunft auf den Markt kommen könnten.

Ich freue mich, diese Technologien mit dir zu teilen, denn sie haben meine eigene Karriere beeinflusst und mir geholfen, technologische Meisterleistungen zu vollbringen, von denen ich dachte, dass sie meine eigenen Fähigkeiten übersteigen. Wenn du diesen Satz zu Ende liest, wird eine meiner Kafka-Streams-Anwendungen bereits neun Millionen Ereignisse verarbeitet haben. Das Gefühl, einen echten Geschäftswert zu schaffen, ohne exorbitant viel Zeit in die Lösung investieren zu müssen, wird dich noch jahrelang mit diesen Technologien arbeiten lassen. Und wie bei jeder anderen Kunstform, sei es ein lebensveränderndes Lied oder ein wunderschönes Gemälde, liegt es in der menschlichen Natur, es teilen zu wollen. Betrachte dieses Buch also als ein Mixtape von mir für dich, mit meinen Lieblingskompilationen aus dem Bereich der Streamverarbeitung, die du genießen kannst: Kafka Streams und ksqlDB, Band 1.

Wer sollte dieses Buch lesen?

Dieses Buch richtet sich an Dateningenieure, die lernen wollen, wie man hoch skalierbare Stream-Processing-Anwendungen erstellt, um große Datenmengen in Echtzeit zu bewegen, anzureichern und umzuwandeln. Diese Fähigkeiten werden häufig benötigt, um Business-Intelligence-Initiativen, analytische Pipelines, die Erkennung von Bedrohungen, die Verarbeitung von Ereignissen und vieles mehr zu unterstützen. Data Scientists und Analysten, die ihre Fähigkeiten durch die Analyse von Echtzeitdatenströmen erweitern wollen, werden ebenfalls von diesem Buch profitieren, das eine spannende Abkehr von der Batch-Verarbeitung darstellt, die diese Bereiche bisher dominiert hat. Vorkenntnisse über Apache Kafka sind nicht erforderlich, aber eine gewisse Vertrautheit mit der Programmiersprache Java erleichtert das Verständnis der Kafka-Streams-Tutorials.

Navigieren in diesem Buch

Dieses Buch ist grob wie folgt aufgebaut:

  • Kapitel 1 bietet eine Einführung in Kafka und eine Anleitung zum Betrieb eines Kafka-Clusters mit einem Knoten.

  • Kapitel 2 bietet eine Einführung in Kafka Streams, beginnend mit einem Überblick über den Hintergrund und die Architektur und endend mit einer Anleitung zum Ausführen einer einfachen Kafka-Streams-Anwendung.

  • In den Kapiteln 3 und 4 werden die zustandslosen und zustandsbehafteten Operatoren in der Kafka Streams High-Level-DSL (domänenspezifische Sprache) behandelt. Jedes Kapitel enthält ein Tutorial, in dem gezeigt wird, wie man diese Operatoren zur Lösung eines interessanten Geschäftsproblems einsetzt.

  • In Kapitel 5 wird die Rolle der Zeit in unseren Stream-Processing-Anwendungen erörtert und gezeigt, wie wir Fenster verwenden, um fortgeschrittene zustandsabhängige Operationen durchzuführen, z. B. gefensterte Joins und Aggregationen. Ein Tutorium, das sich am Beispiel des prädiktiven Gesundheitswesens orientiert, veranschaulicht die wichtigsten Konzepte.

  • In Kapitel 6 wird beschrieben, wie die zustandsbehaftete Verarbeitung unter der Haube funktioniert, und es werden einige operative Tipps für zustandsbehaftete Kafka-Streams-Anwendungen gegeben.

  • In Kapitel 7 wird die untergeordnete Prozessor-API von Kafka Streams vorgestellt, die für die Planung periodischer Funktionen verwendet werden kann und einen detaillierteren Zugriff auf den Anwendungsstatus und die Metadaten der Datensätze ermöglicht. Das Tutorial in diesem Kapitel ist inspiriert von IoT (Internet of Things) Anwendungsfällen.

  • In Kapitel 8 erhältst du eine Einführung in ksqlDB und erfährst mehr über die Geschichte und Architektur dieser Technologie. Das Tutorial in diesem Kapitel zeigt dir, wie du eine ksqlDB Serverinstanz installierst und betreibst und wie du mit der ksqlDB CLI arbeitest.

  • Kapitel 9 behandelt die Datenintegrationsfunktionen von ksqlDB, die von Kafka Connect unterstützt werden.

  • In den Kapiteln 10 und 11 wird der SQL-Dialekt ksqlDB im Detail besprochen. Es wird gezeigt, wie man mit verschiedenen Sammlungstypen arbeitet, Push- und Pull-Abfragen durchführt und vieles mehr. Die Konzepte werden anhand eines Tutorials vorgestellt, das auf einem Anwendungsfall von Netflix basiert: Änderungen an verschiedenen Shows/Filmen verfolgen und diese Änderungen anderen Anwendungen zur Verfügung stellen.

  • Kapitel 12 enthält die Informationen, die du brauchst, um deine Kafka-Streams und ksqlDB-Anwendungen in der Produktion einzusetzen. Dazu gehören Informationen zur Überwachung, zum Testen und zur Containerisierung deiner Anwendungen.

Quellcode

Der Quellcode für dieses Buch ist auf GitHub unterhttps://github.com/mitch-seymour/mastering-kafka-streams-and-ksqldb zu finden.

Eine Anleitung zum Erstellen und Ausführen jedes Tutorials wird im Repository enthalten sein.

Kafka Streams Version

Zum Zeitpunkt der Erstellung dieses Buches war die neueste Version von Kafka Streams die Version 2.7.0. Dies ist die Version, die wir in diesem Buch verwenden, obwohl der Code in vielen Fällen auch mit älteren oder neueren Versionen der Kafka-Streams-Bibliothek funktioniert. Wir werden uns bemühen, den Quellcode zu aktualisieren, wenn neuere Versionen bahnbrechende Änderungen mit sich bringen, und werden diese Aktualisierungen in einem eigenen Zweig veröffentlichen (z. B. kafka-streams-2.8).

ksqlDB Version

Zum Zeitpunkt der Erstellung dieses Dokuments war die neueste Version von ksqlDB die Version 0.14.0. Die Kompatibilität mit älteren und neueren Versionen von ksqlDB ist weniger garantiert, da diese Technologie ständig und schnell weiterentwickelt wird und zum Zeitpunkt der Veröffentlichung dieses Buches noch keine Hauptversion (z. B. 1.0) vorlag. Wir werden uns bemühen, den Quellcode zu aktualisieren, wenn neuere Versionen bahnbrechende Änderungen einführen, und werden diese Aktualisierungen in einem eigenen Zweig (z. B. ksqldb-0.15) bereitstellen. Es wird jedoch empfohlen, Versionen älter als 0.14.0 zu vermeiden, wenn du die Beispiele in diesem Buch ausführst.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Codebeispiele, Übungen usw.) findest du auf der GitHub-Seite des Buches, https://github.com/mitch-seymour/mastering-kafka-streams-and-ksqldb.

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schreibe bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teildes Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eineGenehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Mastering Kafka Streams and ksqlDB von Mitch Seymour (O'Reilly). Copyright 2021 Mitch Seymour, 978-1-492-06249-3."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/mastering-kafka-streams aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.

Du findest uns auf Facebook: http://facebook.com/oreilly.

Folge uns auf Twitter: http://twitter.com/oreillymedia.

Sieh uns auf YouTube: http://www.youtube.com/oreillymedia.

Danksagungen

Zuallererst möchte ich mich bei meiner Frau Elyse und meiner Tochter Isabelle bedanken. Ein Buch zu schreiben ist eine große Zeitinvestition, und eure Geduld und Unterstützung während des gesamten Prozesses haben mir ungemein geholfen. So sehr ich es auch genossen habe, dieses Buch zu schreiben, so sehr habe ich euch beide vermisst, und ich freue mich darauf, wieder mehr gemeinsame Abende und Vater-Tochter-Zeiten zu haben.

Ich möchte auch meinen Eltern Angie und Guy dafür danken, dass sie mir den Wert harter Arbeit beigebracht haben und eine nie versiegende Quelle der Ermutigung sind. Eure Unterstützung hat mir im Laufe der Jahre geholfen, viele Herausforderungen zu meistern, und ich bin euch beiden ewig dankbar.

Dieses Buch wäre ohne die folgenden Personen nicht möglich gewesen, die viel Zeit in die Überprüfung des Inhalts gesteckt haben und uns auf dem Weg dorthin viel Feedback und Ratschläge gegeben haben: Matthias J. Sax, Robert Yokota, Nitin Sharma, Rohan Desai, Jeff Bleiel und Danny Elfanbaum. Ich danke euch allen, dass ihr mir geholfen habt, dieses Buch zu erstellen.

Viele der Tutorials basieren auf realen Anwendungsfällen und ich bin allen Mitgliedern der Community zu Dank verpflichtet, die ihre Erfahrungen mit Kafka Streams und ksqlDB offen mit uns geteilt haben, sei es auf Konferenzen, in Podcasts, Blogs oder sogar in persönlichen Interviews. Ihre Erfahrungen haben dazu beigetragen, dieses Buch zu gestalten, daseinen besonderen Schwerpunkt auf praktische Stream-Processing-Anwendungen legt. Nitin Sharmalieferte außerdem Ideen für die von Netflix inspirierten ksqlDB-Tutorials, und Ramesh Sringeri teilte seine Stream-Processing-Erfahrungen bei Children's Healthcare of Atlanta, die das Predictive-Healthcare-Tutorial inspirierten. Vielen Dank an euch beide.

Ein besonderer Dank geht an Michael Drogalis, der dieses Buch sehr unterstützt hat, selbst als es nur eine Ideenskizze war. Außerdem danke ich dir, dass du mich mit vielen der Rezensenten dieses Buches in Kontakt gebracht hast, und auch Jay Kreps, der freundlicherweise das Vorwort geschrieben hat. Auch die Fachbeiträge von Yeva Byzek und Bill Bejeck haben die Messlatte für dieses Buch hoch gelegt. Ich danke euch beiden für eure Beiträge in diesem Bereich.

In meiner Karriere gab es viele Menschen, die mir geholfen haben, an diesen Punkt zu gelangen. Mark Conde und Tom Stanley, danke, dass ihr mir die Türen zu meiner Karriere als Softwareentwickler geöffnet habt. Barry Bowden, weil er mir geholfen hat, ein besserer Ingenieur zu werden, und weil er ein großartiger Mentor war. Erin Fusaro, die immer genau wusste, was sie zu sagen hatte, wenn ich mich überfordert fühlte, und die einfach ein Fels in der Brandung war. Justin Isasi, für deine ständige Ermutigung und dafür, dass du dafür sorgst, dass meine Bemühungen nicht unerkannt bleiben. Sean Sawyer, für einen Vorschlag, den du vor einigen Jahren gemacht hast, nämlich dass ich eine neue Sache namens "Kafka Streams" ausprobieren sollte, die eindeutig außer Kontrolle geraten ist. Thomas Holmes und Matt Farmer, die bei vielen Gelegenheiten ihr technisches Fachwissen mit mir geteilt und mir geholfen haben, ein besserer Ingenieur zu werden. Und an das Data Services Team bei Mailchimp: Danke, dass ihr mir geholfen habt, einige wirklich coole Probleme zu lösen, und dass ihr mich mit eurer eigenen Arbeit inspiriert habt.

Und schließlich an meine Freunde und meine Familie, die auch dann noch zu mir halten, wenn ich für Monate verschwinde, um an einem neuen Projekt zu arbeiten. Danke, dass du durchgehalten hast, das war ein langer Bericht.

Get Kafka Streams und ksqlDB beherrschen now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.