www.wikidata.de-de.nina.az
Apache Kafka ist eine freie Software der Apache Software Foundation die insbesondere zur Verarbeitung von Datenstromen dient Kafka ist dazu entwickelt Datenstrome zu speichern und zu verarbeiten und stellt eine Schnittstelle zum Laden und Exportieren von Datenstromen zu Drittsystemen bereit Die Kernarchitektur bildet ein verteiltes Transaktions Log Apache KafkaBasisdatenMaintainer Apache Software FoundationEntwickler Apache Software Foundation LinkedinErscheinungsjahr 7 November 2010 1 Aktuelle Version 3 6 0 2 3 Oktober 2023 Betriebssystem PlattformunabhangigProgrammiersprache Java 3 Scala 4 Kategorie StreamprozessorLizenz Apache Lizenz Version 2 0 Apache Lizenzkafka apache orgUrsprunglich wurde Apache Kafka von LinkedIn entwickelt Seit 2012 ist es Teil der Apache Software Foundation Im Jahr 2014 grundeten die Entwickler das Unternehmen Confluent aus LinkedIn heraus welches die Weiterentwicklung von Apache Kafka fokussiert Apache Kafka ist ein verteiltes System das skalierbar und fehlertolerant und somit fur Big Data Anwendungen geeignet ist Den Namenszusatz Kafka erhielt es von Jay Kreps neben Neha Narkhede und Jun Rao einer der Mitentwickler der Software Er begrundete die Namenswahl damit dass Apache Kafka ein fur das Schreiben optimiertes System sei weswegen der Name eines Autors naheliegend gewesen sei und da er Kafkas Werke mochte wahlte er diesen 5 Inhaltsverzeichnis 1 Funktionsweise 2 Kafka Connect API 3 Kafka Streams API 4 Kafka Operator fur Kubernetes 5 Versions Kompatibilitat 6 Literatur 7 Weblinks 8 EinzelnachweiseFunktionsweise Bearbeiten nbsp Uberblick uber Apache KafkaDen Kern des Systems bildet ein Rechnerverbund Cluster bestehend aus sogenannten Brokern Broker speichern Schlussel Wert Nachrichten zusammen mit einem Zeitstempel in Topics Topics wiederum sind in Partitionen aufgeteilt welche im Kafka Cluster verteilt und repliziert werden Innerhalb einer Partition werden die Nachrichten in der Reihenfolge gespeichert in der sie geschrieben wurden Lese und Schreibzugriffe umgehen den Arbeitsspeicher durch die direkte Anbindung der Festplatten mit dem Netzwerkadapter zero copy so dass weniger Kopiervorgange vor dem Schreiben oder Versenden von Nachrichten notig sind 6 7 Anwendungen die Daten in einen Kafka Cluster schreiben werden als Producer bezeichnet Anwendungen die Daten von dort lesen als Consumer Zur Datenstromverarbeitung kann Kafka Streams verwendet werden Kafka Streams ist eine Java Bibliothek die Daten aus Kafka liest verarbeitet und die Ergebnisse nach Kafka zuruck schreibt Kafka kann auch mit anderen Stream Verarbeitungssystemen verwendet werden Ab der Version 0 11 0 0 wird transaktionales Schreiben unterstutzt so dass garantiert werden kann dass Nachrichten genau ein einziges Mal verarbeitet werden wenn eine Anwendung Kafka Streams verwendet exactly once processing Kafka unterstutzt zwei Arten von Topics normal und compacted Topics Normale Topics garantieren Nachrichten fur einen konfigurierbaren Zeitraum vorzuhalten oder einen gewissen Speicherbedarf nicht zu uberschreiten Liegen Nachrichten vor die alter sind als die konfigurierte retention time oder ist das Speicherlimit einer Partition uberschritten kann Kafka alte Nachrichten loschen um Festplattenspeicher freizugeben Standardmassig speichert Kafka Nachrichten fur 7 Tage aber es ist auch moglich Nachrichten fur immer zu speichern Neben normal Topics bietet Kafka auch compacted Topics an die keiner Zeit oder Platzlimitierung unterliegen Stattdessen werden neuere Nachrichten als Aktualisierung updates alter Nachrichten mit dem gleichen Schlussel interpretiert Dabei wird garantiert dass die neueste Nachricht pro Schlussel nie geloscht wird Nutzer konnen Nachrichten jedoch explizit loschen indem sie eine Spezialnachricht sog tombstone mit null Wert fur den entsprechenden Schlussel schreiben Kafka bietet vier Hauptschnittstellen an Producer API Fur Anwendungen die Daten in einen Kafka Cluster schreiben wollen Consumer API Fur Anwendungen die Daten aus einem Kafka Cluster lesen wollen Connect API Import Export Schnittstelle zur Anbindung von Drittsystemen Streams API Java Bibliothek zur Datenstromverarbeitung Die Consumer und Producer Schnittstellen basieren auf dem Kafka Nachrichtenprotokoll und konnen als Referenzimplementierung in Java angesehen werden Das eigentliche Kafka Nachrichtenprotokoll ist ein binares Protokoll und erlaubt es damit Consumer und Producer Clients in jeder beliebigen Programmiersprache zu entwickeln Damit ist Kafka nicht an das JVM Okosystem gebunden Eine Liste mit verfugbaren Nicht Java Clients wird im Apache Kafka Wiki gepflegt 8 Kafka Connect API BearbeitenKafka Connect oder Connect API bietet eine Schnittstelle zum Laden Exportieren von Daten aus in Drittsysteme Es ist ab Version 0 9 0 0 verfugbar und baut auf der Consumer und der Producer API auf Kafka Connect fuhrt sogenannte Konnektoren connectors aus welche die eigentliche Kommunikation mit dem Drittsystem ubernehmen Dabei definiert die Connect API die Programmierschnittstellen die von einem Connector implementiert werden mussen Es gibt bereits viele frei verfugbare und kommerzielle Konnektoren die genutzt werden konnen Apache Kafka liefert selbst keine produktreifen Konnektoren Kafka Streams API BearbeitenKafka Streams oder Streams API ist eine Java Bibliothek zur Datenstromverarbeitung und ist ab Version 0 10 0 0 verfugbar Die Bibliothek ermoglicht es zustandsbehaftete Datenstromverarbeitungsprogramme zu entwickeln die sowohl skalierbar flexibel als auch fehlertolerant sind Dafur bietet Kafka Streams eine eigene domanenspezifische Sprache DSL an die Operatoren zum Filtern Abbilden Mappen oder Gruppieren enthalt Des Weiteren werden Zeitfenster Joins und Tabellen unterstutzt Erganzend zur domanenspezifischen Sprache ist es auch moglich eigene Operatoren in der Processor API zu implementieren Diese Operatoren konnen auch in der domanenspezifischen Sprache genutzt werden Zur Unterstutzung zustandsbehafteter Operatoren wird RocksDB verwendet Dies erlaubt es Operatorzustande lokal vorzuhalten und Zustande die grosser als der verfugbare Hauptspeicher sind als RocksDB Daten auf die Festplatte auszulagern Um den Anwendungszustand verlustsicher zu speichern werden alle Zustandsanderungen zusatzlich in einem Kafka Topic protokolliert Im Falle eines Ausfalls konnen alle Zustandsubergange aus dem Topic ausgelesen werden um den Zustand wiederherzustellen Kafka Operator fur Kubernetes BearbeitenIm August 2019 wurde ein Operator zum Aufbau einer Cloud Native Kafka Plattform mit Kubernetes veroffentlicht 9 Dieser ermoglicht die Automatisierung der Bereitstellung von Pods der Komponenten des Kafka Okosystems ZooKeeper Kafka Connect KSQL Rest Proxy eine Uberwachung von SLAs durch Confluent Control Center oder Prometheus die flexible Skalierung von Kafka sowie die Handhabung von Ausfallen und eine Automatisierung von Rolling Updates 9 Versions Kompatibilitat BearbeitenBis zur Version 0 9 0 sind Kafka Broker mit alteren Client Versionen ruckwartskompatibel Ab Version 0 10 0 0 konnen Broker auch vorwartskompatibel mit neuen Clients kommunizieren Fur die Streams API beginnt diese Kompatibilitat erst mit Version 0 10 1 0 Literatur BearbeitenTed Dunning Ellen M D Friedman Streaming Architecture New Designs Using Apache Kafka and MapR O Reilly Verlag Sebastopol 2016 ISBN 978 1 4919 5392 1 Neha Narkhede Gwen Shapira Todd Palino Kafka The Definitive Guide Real time data and stream processing at scale O Reilly Verlag Sebastopol 2017 ISBN 978 1 4919 3616 0 William P Bejeck Jr Kafka Streams in Action Real time apps and microservices with the Kafka Streams API Manning Shelter Island 2018 ISBN 978 1 61729 447 1 Weblinks BearbeitenOffizielle Website Producer API Consumer API Connector API Streams API Einfuhrung in Kafka deutsch Apache Kafka auf GitHubEinzelnachweise Bearbeiten github com abgerufen am 16 Mai 2022 Release 3 6 0 3 Oktober 2023 abgerufen am 19 Oktober 2023 projects apache org abgerufen am 8 April 2020 The apache kafka Open Source Project on Open Hub Languages Page In Open Hub abgerufen am 16 Dezember 2018 Jay Kreps What is the relation between Kafka the writer and Apache Kafka the distributed messaging system Quora abgerufen am 9 Marz 2023 Alexander Neumann Apache Kafka Entwickler erhalten 24 Millionen US Dollar In heise Developer Heise Medien GmbH amp Co KG 9 Juli 2015 abgerufen am 21 Juli 2016 Thomas Joos So analysieren Sie Logdateien mit Open Source Software Realtime Analytics mit Apache Kafka In BigData Insider Vogel Business Media GmbH amp Co KG 24 August 2015 abgerufen am 21 Juli 2016 Kafka Clients support In Apache Kafka Wiki Apache Software Foundation 29 September 2020 abgerufen am 13 Januar 2021 a b Kafka Operator fur Kubernetes Informatik Aktuell 2 August 2019 abgerufen am 4 August 2019 Abgerufen von https de wikipedia org w index php title Apache Kafka amp oldid 235993504