Apache Kafka
()
About this ebook
Related to Apache Kafka
Titles in the series (100)
JavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsAlgorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5IT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsjQuery Mobile - Basics: Basics Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsNintex Workflow: Konzepte und Strategien für leistungsfähige SharePoint-Workflows Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsQualitätssicherung mit JavaScript und PHP Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsC++: Kurzportträt einer zeitlosen Sprache Rating: 0 out of 5 stars0 ratingsJava EE 7: Ein Ausblick Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design 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 ratingsAgile Architektur mit .NET - Grundlagen und Best Practices Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratings
Related ebooks
Big Data, Fast Data 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 ratingsKompaktkurs C# 7 Rating: 0 out of 5 stars0 ratingsMicroservices: Der Hype im Realitätscheck Rating: 0 out of 5 stars0 ratingsC# 10 – kurz & gut Rating: 0 out of 5 stars0 ratingsOAuth 2.0: Client & Server Rating: 0 out of 5 stars0 ratingsPrinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Rating: 0 out of 5 stars0 ratingsMicroservices-Architektur: Patterns in Spring implementieren Rating: 0 out of 5 stars0 ratingsGraphQL: Eine Einführung in APIs mit GraphQL Rating: 0 out of 5 stars0 ratingsModerne Realzeitsysteme kompakt: Eine Einführung mit Embedded Linux Rating: 0 out of 5 stars0 ratingsKnigge für Softwarearchitekten Rating: 0 out of 5 stars0 ratingsCloud-Services testen: Von der Risikobetrachtung zu wirksamen Testmaßnahmen 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 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 ratingsDevOps-Leadership - Schritte zur Einführung und Umsetzung von DevOps: Erfolgreiche Transformation vom Silo zur Wertschöpfungskette Rating: 0 out of 5 stars0 ratingsDurchstarten mit Swift: Apples neue Programmiersprache - Schritt für Schritt verständlich und gut erklärt Rating: 0 out of 5 stars0 ratingsVon Monolithen und Microservices: Funktionierende Microservices-Architekturen erstellen 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 ratingsMQTT im IoT: Einstieg in die M2M-Kommunikation Rating: 0 out of 5 stars0 ratingsDas Java Memory Model: Überblick und Ausblick auf Java 9 Rating: 0 out of 5 stars0 ratingsJavaScript und TypeScript für C#-Entwickler Rating: 0 out of 5 stars0 ratings
Programming For You
Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsJavaScript kurz & gut Rating: 3 out of 5 stars3/5PowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Python kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5C++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsLinux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Rating: 0 out of 5 stars0 ratingsMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsGames | Game Design | Game Studies: Eine Einführung (Deutschsprachige Ausgabe) Rating: 0 out of 5 stars0 ratingsGit 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 ratingsMicrosoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben 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 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5HTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript 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 ratingsRichtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Rating: 0 out of 5 stars0 ratingsPython-Grundlagen 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 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsSQL – kurz & gut Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Python programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsVue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsPython kinderleicht!: Einfach programmieren lernen – nicht nur für Kids 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