Apache Kafka 3.9.0 Release Summary

Apache Kafka 3.9.0 Release Summary

History has been made.

This week the final 3.x Kafka release went out. 🔥

It will be the LAST release with ZooKeeper.

Here are the top features you should know about:

Tiered Storage GA 🥳

Tiered Storage finally...


...FINALLY...


turns GA!


It is now 100% production ready. (and honestly, has been running in production for a while in hosted providers like Aiven and AWS)

Final touches that were added with this release were:

  • the ability to disable per-topic
  • exposing the latest offsets in tiered stores
  • quotas
  • debug functionality

Tiered Storage is a must-have in Kafka. It can result in:

  • better performance via SSDs
  • 10-100x faster rebalances
  • 10-100x faster recovery times
  • the ability to store effectively infinite data in Kafka

I've covered it before, many times:


Article content
a scenario which simulates a broker losing its disk, and the subsequent recovery scenario. with and without tiered storage ;)


Use Tiered Storage!


Improved ZK Migration

Confluent , as the good steward they are, have migrated thousands of clusters (big and small) from ZK to KRaft. 😰

They’ve found and fixed many bugs throughout the process.

This latest Kafka version contains the most bulletproof migration code that could exist today. 👌

Article content
Confluent's migration team


Note that this is the LAST release that'll contain the migration code.

With 4.0 and beyond, there will be no ability to run ZK nor migrate back to ZK.

Before going to 4.0, you'll always need to stop at a bridge release. That is, the release you'll use to migrate from ZK to KRaft.

The best one for that?

3.9.0 👌


Dynamic Controller Quotas


Article content

With KRaft, you have a quorum of Kafka brokers that act as controllers.

Previously, you had to:

  • statically configure the address for all of the controllers in your cluster (via the properties file)
  • change the file and restart the cluster (when you wanted to add/remove controllers)

Now, you can:

  • configure a general bootstrap.servers config consisting of one (or a few)
  • add and remove controllers as you please via kafka-metadata-quorum.sh while the cluster is running

This flexibilty lets you dynamically modify controllers on the go.

It's simpler. It's safer. 👌


Kafka Streams

• less log spam (KIP-1049)

• better exception handling (KIP-1033)

KIP-1033 is interesting. It allows you to define exception handlers for your business logic in a single class.

I ran through some pseudo-code to see how it compared before and after.

Here it is 👇


Article content
No KIP-1033. No exception handling. (buggy code!)


Article content
No KIP-1033. With proper exception handling. Notice how verbose it is.



Article content
With KIP-1033. Business logic is MUCH cleaner. And this handling allows reuse.

It's much nicer! 🔥


Kafka Connect

Last but not least - Connect. Three things:


• New /health endpoint in Kafka Connect for better monitoring (no more hacky connector checks!)

• You can now disable offset syncs in MirrorMaker2

• Better handling of null values in transformations

Article content



Looking Back 👀

It's funny, looking back now I realize this release was expected to come a lot sooner.

The 4.0 release has been getting pushed back quite frequently.

But that's how all good (software) things are... usually.

Better late than never! 😉

Article content
if you don't follow me on X... you're missing out.

Looking Forward 🤩

As we end this article, all eyes are on the next MAJOR Kafka release:


4.0.0 👑

Expected end of January, 2025.

fun fact?

The last time Kafka had a major release (3.0) was more than 4 years ago!

September 2021.

Time flies 🥲

Article content
the release plan:



Found this useful?

  1. Reshare with your network. 🙏
  2. Follow me here: ✅ Stanislav Kozlovski
  3. Say "Hi" in the comments (I'll say hi in a random language back)
  4. For more Kafka & Big Data -> https://2minutestreaming.beehiiv.com/

Narasimhan M B

Lead Data Engineer & Analytics | Spark, Terraform, CI/CD | Sprinkled ML | DataOps | AWS Solution Architect

9mo

Time for Raft!

Like
Reply
Vishalendu Pandey

Project Director and Java Performance Test/Engineering Architect | Jupyter/Python Data Analysis (EDA) | Azure | Kubernetes | AI Enthusiast | Over half a decade of Perf exp with Cloud Development/Migration Projects.

9mo

https://cwiki.apache.org/confluence/display/KAFKA/KIP-1031%3A+Control+offset+translation+in+MirrorSourceConnector This is actually something to note for teams that manage Kafka MM2, where they dont sync CG lag but only topic offsets.

Like
Reply

Still waiting on a Graalvm Kafka Connect binary ⏳

Sandijs Aploks

AI Agents, Python, Kotlin, Node.js, Java, Golang, Julia, Kubernetes, Serverless, AWS, GCP, Azure, DevOps, Terraform, Ansible, Low Level Neural Networks programmer.

9mo

With Bare Metal Kubernetes, Ansible, and Strimzi Operator it was easier to get Kafka KRaft version working than the old one. 🤣

To view or add a comment, sign in

Explore topics