Apache Kafka
()
About this ebook
Related to Apache Kafka
Titles in the series (100)
Java EE Security Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsAlgorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsBig Data: Executive Briefing Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5OAuth 2.0: Client & Server Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsVaadin Schnelleinstieg Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratings
Related ebooks
Big Data, Fast Data Rating: 0 out of 5 stars0 ratingsMicroservices: Der Hype im Realitätscheck Rating: 0 out of 5 stars0 ratingsWeb-APIs mit ASP.NET MVC 6 Rating: 0 out of 5 stars0 ratingsClusterbau: Hochverfügbarkeit mit Linux Rating: 0 out of 5 stars0 ratingsCloud Computing Anbietervergleich: Amazon / Microsoft / Google & Co Rating: 0 out of 5 stars0 ratingsOAuth 2.0: Client & Server Rating: 0 out of 5 stars0 ratingsMicroservices-Architektur: Patterns in Spring implementieren Rating: 0 out of 5 stars0 ratingsMachine Learning – Die Referenz: Mit strukturierten Daten in Python arbeiten Rating: 0 out of 5 stars0 ratingsCloud-Services testen: Von der Risikobetrachtung zu wirksamen Testmaßnahmen Rating: 0 out of 5 stars0 ratingsKnigge für Softwarearchitekten Rating: 0 out of 5 stars0 ratingsDevOps-Leadership - Schritte zur Einführung und Umsetzung von DevOps: Erfolgreiche Transformation vom Silo zur Wertschöpfungskette Rating: 0 out of 5 stars0 ratingsModerne Realzeitsysteme kompakt: Eine Einführung mit Embedded Linux Rating: 0 out of 5 stars0 ratingsGraphQL: Eine Einführung in APIs mit GraphQL Rating: 0 out of 5 stars0 ratingsGroovy – kurz & gut Rating: 0 out of 5 stars0 ratingsResilience: Wie Netflix sein System schützt Rating: 0 out of 5 stars0 ratingsGitHub – Eine praktische Einführung: Von den ersten Schritten bis zu eigenen GitHub Actions Rating: 0 out of 5 stars0 ratingsPrinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Rating: 0 out of 5 stars0 ratingsZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Rating: 0 out of 5 stars0 ratingsVon Monolithen und Microservices: Funktionierende Microservices-Architekturen erstellen Rating: 0 out of 5 stars0 ratingsActive Directory in Window Server 2012 R2: Handbuch für die Planung und den praktischen Einsatz in Windows-Netzwerken Rating: 0 out of 5 stars0 ratingsBig Data - Apache Hadoop Rating: 0 out of 5 stars0 ratingsBig Data: Datenverarbeitung basierend auf MOM und SQL Rating: 0 out of 5 stars0 ratingsDSL mit Xtext/Xtend. Luecken(x)text Rating: 0 out of 5 stars0 ratingsEnterprise Java Web Services Rating: 0 out of 5 stars0 ratingsM2M by Eclipse Rating: 0 out of 5 stars0 ratingsJavaScript für Java-Entwickler Rating: 0 out of 5 stars0 ratingsAngular 2: Moderne Frontends für alle Plattformen entwickeln Rating: 0 out of 5 stars0 ratingsSpock, Geb und Selenium: Testframeworks unter die Lupe genommen Rating: 0 out of 5 stars0 ratingsDynamic Proxies: Effizient programmieren Rating: 0 out of 5 stars0 ratings
Programming For You
C++ – kurz & gut: Aktuell zu C++17 Rating: 4 out of 5 stars4/5SQL – kurz & gut Rating: 0 out of 5 stars0 ratingsPython-Grundlagen Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsDie ultimative QNAP NAS Bibel - Das Praxisbuch - mit vielen Insider Tipps und Tricks - komplett in Farbe Rating: 0 out of 5 stars0 ratingsPython kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5Die ultimative FRITZ!Box Bibel - Das Praxisbuch 2. aktualisierte Auflage - mit vielen Insider Tipps und Tricks - komplett in Farbe Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsPython programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Mikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsSQL von Kopf bis Fuß Rating: 4 out of 5 stars4/5Programmieren von Kopf bis Fuß Rating: 4 out of 5 stars4/5Games | Game Design | Game Studies: Eine Einführung (Deutschsprachige Ausgabe) Rating: 0 out of 5 stars0 ratingsMicrocontroller für das IoT Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsC++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsDas Franzis Starterpaket Arduino Uno: Das Handbuch für den Schnelleinstieg Rating: 0 out of 5 stars0 ratingsJavaScript kinderleicht!: Einfach programmieren lernen mit der Sprache des Web Rating: 0 out of 5 stars0 ratingsPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratingsJavaScript kurz & gut Rating: 3 out of 5 stars3/5Richtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Rating: 0 out of 5 stars0 ratingsC von Kopf bis Fuß Rating: 3 out of 5 stars3/5Android-Programmierung kurz & gut Rating: 0 out of 5 stars0 ratingsVue.js kurz & gut Rating: 0 out of 5 stars0 ratingsProgrammieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratings
Reviews for Apache Kafka
0 ratings0 reviews
Book preview
Apache Kafka - Lars Pfannenschmidt
GmbH
1 Massive Datenströme mit Apache Kafka
Apache Kafka ist ein verteilter, partitionierender und replizierender Service für Datenströme. Er stellt seine Funktionen wie ein klassischer Messaging Broker zur Verfügung, allerdings unter der Verwendung von Konzepten, die sich von den bisher gängigen deutlich unterscheiden. Im Rahmen dieses Kapitels werden wir die wichtigsten dieser Konzepte und den Grund für deren effektive Performance beleuchten und mithilfe von Anwendungsbeispielen veranschaulichen.
Kafka wird in der Regel in einem Cluster betrieben, bei dem jeder einzelne Knoten Broker genannt wird. Datenströme innerhalb des Clusters können in so genannte Topics kategorisiert werden. Ferner unterscheidet man zwischen Prozessen, die Nachrichten erzeugen (Producer), und Prozessen, die Nachrichten konsumieren (Consumer) (Abb. 1.1). Die Kommunikation zwischen Producer, Broker und Consumer findet mithilfe eines sprachenunabhängigen TCP-Protokolls statt. Durch diese Abstraktionsschicht werden Clientbibliotheken für unterschiedliche Programmiersprachen ermöglicht.
Abbildung 1.1: Topologische Übersicht: Producer, Broker, Consumer nach [1]
Topics und Partitionen
Nachrichten werden auf Topics veröffentlicht, wobei eine Nachricht aus einem optionalen Schlüssel und dessen Wert besteht. Kafka erstellt für jedes Topic konfigurierbar viele Partitionen, die jeweils ein sortiertes und unveränderliches Protokoll darstellen, an das kontinuierlich Nachrichten angehängt werden, das Commit Log (Abb. 1.2). Jeder Nachricht in einer Partition wird ein sequenzieller Schlüssel zugewiesen, das Offset. Dieses Offset ist die einzige Metainformation, die zusätzlich zur eigentlichen Nachricht gespeichert wird.
Abbildung 1.2: Die Anatomie eines Topics nach [1]
Das Aufteilen von Topics auf n Partitionen ermöglicht es, dass ein Server nicht den Platz für ein gesamtes Topic bereitstellen muss, sondern nur für dessen n-ten Teil. Zusätzlich kann die Last von Producern und Consumern im Broker-Cluster verteilt und jede Partition für den Fehlerfall repliziert werden.
Ein Broker behält jede veröffentlichte Nachricht für einen konfigurierbaren Zeitraum vor, standardmäßig sieben Tage, oder bis eine definierbare Maximalgröße erreicht ist, unabhängig davon, ob diese bereits konsumiert wurde oder nicht. Nach Ablauf dieses Zeitfensters wird die Nachricht gelöscht. Da Kafkas Performance unabhängig von der Größe des commit logs konstant bleibt, kann eine große Nachrichtenmasse problemlos gespeichert werden.
Offset-Management
Das Offset, das definiert, welche Nachricht gelesen werden soll, wird anders als beim klassischen Messaging vom Consumer selbst gesteuert. Da außerdem das Commit Log kontinuierlich erweitert wird, können so Lese- und Schreibzugriffe auf der Festplatte größtenteils sequenziell erledigt werden. Diese Art der Persistierung von Daten ist in einem solchen verteilten System deutlich leistungsfähiger als der klassische Ansatz.
In der Regel wird beim Empfang von Nachrichten das Offset kontinuierlich erhöht, um sequenziell zu lesen. Es ist aber ebenso möglich, Nachrichten in einer willkürlichen Reihenfolge oder bereits konsumierte Nachrichten zu lesen. Dieses Vorgehen kann beispielsweise angewandt werden, wenn eine erneute Datenverarbeitung (beispielsweise im Fehlerfall) nötig sein sollte oder ein zweiter Consumer dieselben Nachrichten zeitgleich lesen möchte. Das Entwerfen einer passenden Strategie zur Nachrichtenabarbeitung wird Offset-Management genannt. Im Zuge der Betrachtung eines Anwendungsbeispiels werden wir im Abschnitt Consumer näher auf konkrete Vorgehensweisen eingehen.
Log Compaction
Wie bereits beschrieben, speichert Kafka im normalen Betrieb