Apache Kafka 3.0.0 nimmt endgültig Abschied von Java 8

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

In Pocket speichern vorlesen Druckansicht

(Bild: Asvolas / Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Matthias Parbel

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 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 empfiehlt das Team KRaft jedoch noch nicht für den Einsatz in Produktion.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

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 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 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 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, das Einführungsvideo mit Tim Berglund sowie die Release Notes zu Apache Kafka 3.0.0.

(map)