zurück zum Artikel

Apache Kafka 3.0.0 nimmt endgültig Abschied von Java 8

Matthias Parbel

(Bild: Asvolas / Shutterstock.com)

Das Major Release bringt zahlreiche neue Funktionen, Breaking Changes bei den APIs und weitere Fortschritte beim ZooKeeper-Ersatz KRaft.

Der unter dem Dach der Apache Software Foundation (ASF) weiterentwickelte Message Broker Kafka liegt ab sofort in Version 3.0.0 vor. Confluent und die Community haben für das aktuelle Major Release des Open-Source-Projekts zahlreiche neue Funktionen und Fehlerbereinigungen beigesteuert – darunter auch Verbesserungen an KRaft, dem künftig in Kafka integrierten selbstverwalteten Metadaten-Quorum, das Apache ZooKeeper ersetzen soll. Darüber hinaus müssen sich Entwicklerinnen und Entwickler in Version 3.0.0 auf Breaking Changes bei den APIs einstellen.

Mit Veröffentlichung von Version 2.8 [1] im Frühjahr hatte das Kafka-Team bereits einen ersten Eindruck vermittelt, wie sich der Message Broker künftig ohne ZooKeeper nutzen lässt. Seither seien eine Reihe von Verbesserungen an den KRaft-Metadaten und APIs vorgenommen worden. Unter anderem ist nun das Neuzuweisen von Partitionen möglich und KRaft bietet Support für Exactly-once.

Darüber hinaus können KRaft-Controller und KRaft-Broker ab Version 3.0 Snapshots für die Metadaten-Topic-Partition __cluster_metadata erzeugen, replizieren und laden. Der Kafka-Cluster nutzt dieses Topic, um Metadateninformationen wie die Broker-Konfiguration oder Topic Partition Assignments zu speichern und zu replizieren. Angesichts noch bekannter Lücken [2] empfiehlt das Team KRaft jedoch noch nicht für den Einsatz in Produktion.

Tim Berglund aus dem Developer Relations Team bei Confluent gibt im Video einen kompakten Überblick zu Apache Kafka 3.0

Auf der Liste der als veraltet (deprecated) ausgewiesenen Funktionen und Komponenten finden sich unter anderem Java 8, Scala 2.12 und Version 1 des MirrorMaker. Während mit Java 17 gerade ein neues LTS-Release [3] der Programmiersprache erschienen ist, müssen sich Kafka-Anwenderinnen und -anwender von Java 8 verabschieden. Spätestens ab Kafka 4.0 entfällt der Support für die veraltete Java-Version. Das gleiche gilt für Scala 2.12. Während sich MirrorMaker2 (MM2) nun nutzen lässt, um Offset-Datensätze auf beliebigen Clustern zu speichern, um den Kafka-Quell-Cluster als reine Read-only-Instanz zu sichern, schickt das Entwicklerteam den MirrorMaker v1 aufs Altenteil. Sämtliche Weiterentwicklungsbemühungen sowie neue Funktionen bleiben MM2 vorbehalten.

Im Zuge der für Kafka Streams gemäß Kafka Improvement Proposal KIP-740 [4] vorgeschlagenen umfassenden Renovierung der Klasse TaskId gelten einige Methoden sowie sämtliche internen Felder als deprecated. Die Getter subtopology() und partition() ersetzen dazu topicGroupId und partition-Felder. Der Vorschlag aus KIP-744 [5] sieht darüber hinaus vor, die Implementierung von der Public API einiger Klassen zu trennen. Dazu wurden die Interfaces TaskMetadata, ThreadMetadata und StreamsMetadata neu eingeführt, die bisherigen Klassen mit den gleichen Namen entfallen hingegen.

Einen vollständigen Überblick sämtlicher Neuerungen sowie mehr Details liefern der Confluent-Blogbeitrag zur Ankündigung der neuen Version [6], das Einführungsvideo mit Tim Berglund sowie die Release Notes zu Apache Kafka 3.0.0 [7].

(map [8])


URL dieses Artikels:
https://www.heise.de/-6198489

Links in diesem Artikel:
[1] https://www.heise.de/news/Apache-Kafka-2-8-erlaubt-ersten-Blick-auf-die-Zukunft-ohne-ZooKeeper-6021505.html
[2] https://github.com/apache/kafka/blob/trunk/config/kraft/README.md
[3] https://www.heise.de/news/Programmiersprache-Java-17-erweitert-Pattern-Matching-und-versiegelt-Klassen-6191321.html
[4] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181306557
[5] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181307996
[6] https://www.confluent.io/blog/apache-kafka-3-0-major-improvements-and-new-features/
[7] https://downloads.apache.org/kafka/3.0.0/RELEASE_NOTES.html
[8] mailto:map@ix.de