Featured image for Kafka topics.

This 45th edition of the Kafka Monthly Digest covers what happened in the Apache Kafka developer community in October 2021, including new milestones for Apache Kafka 3.1.0, notable Kafka Improvement Proposals (KIPs), community project releases for Debezium 1.7 and Strimzi 0.26.0, and more.

For last month’s digest, see Kafka Monthly Digest: September 2021.

Releases

Three new Kafka versions (3.1.0, 2.7.2, and 2.6.3) are currently in progress.

Apache Kafka 3.1.0

The release process for Apache Kafka 3.1.0 continued in October 2021. The KIP freeze happened on October 15, and feature freeze happened on October 29. The next milestone will be the code freeze on November 12. The release plan is available on the Apache Kafka wiki.

Kafka 2.7.2 and 2.6.3

On October 8, I volunteered to run these two bugfix releases. The respective release plans for versions 2.7.2 and 2.6.3 are on the Apache Kafka wiki. Votes are currently ongoing on the first release candidates for both of these releases.

Kafka Improvement Proposals

Last month, the community submitted 10 KIPs (KIP-779 to KIP-788; note that two KIPs are currently numbered 786). I'll highlight the ones that caught my eye:

  • KIP-779: Allow source tasks to handle producer exceptions: Source connectors import data from other systems into Kafka. Currently, if a record can't be imported into Kafka—if it's too large, for example—the task that generated the record will fail. This KIP proposes a mechanism that will allow that task to decide whether to fail or ignore the error.

  • KIP-780: Support fine-grained compression options: Most modern compression algorithms expose configurations to tune them for diverse kinds of data. While Kafka supports four algorithms (gzip, LZ4, Snappy, and zstd), it does not allow you to tune them. This KIP proposes adding per-algorithm configurations to allow fine-tuning compression. Note that KIP-390, which introduced compression-level support, has not been merged yet.

  • KIP-782: Expandable batch size in producer: batch.size is a key producer setting; however, it's sometimes tricky to properly tune. This KIP proposes an algorithm to dynamically resize the producer batch size based on the load.

  • KIP-786: Use localhost:9092 as default bootstrap-server/broker-list in client tools: Currently, when using the Kafka command-line tools, you always have to provide the bootstrap servers you want to use. This KIP proposes defaulting --bootstrap-server to localhost:9092 when a value is not explicitly provided, which will make the tools easier to use in development environments.

Community releases

This section covers a few notable open source community project releases:

  • strimzi-kafka-operator 0.26.0: Strimzi is a Kubernetes Operator for running Kafka. Version 0.26 supports Kafka 3.0.0 and 2.8.1. It includes many Cruise Control improvements, such as an update to 2.5.73, along with support for authorization, authentication, and SSL. It also provides the option to build Kafka Connect images with plug-ins by specifying Maven URLs.

  • Debezium 1.7.0: Debezium is a change data capture platform. Debezium 1.7 introduces a new web UI to manage connectors, adds support for NATS in Debezium Server, and includes significant improvements to the incremental snapshotting capabilities that were introduced in the previous release.

  • Sarama 1.30.0: Sarama is a pure Golang Kafka client. This new release adds support for Kafka 3.0, as well, for deleting offsets and managing quotas. It also adds metrics for consumer groups operations and for throttling.

Blogs

Check out these interesting blog articles that were published last month:

To learn more about Kafka, visit Red Hat Developer's Apache Kafka topic page.

Last updated: September 20, 2023