What Is New in Apache Kafka 3.8
Apache Kafka 3.8.0 brings several practical enhancements including compression level control, preview of the next-generation consumer rebalance protocol, improvements to Tiered Storage for JBOD setups, and useful additions for Kafka Streams and Connect.
| Category | Key Changes |
|---|---|
| New Features | Compression level configuration (KIP-390), Next Generation Consumer Rebalance Protocol preview (KIP-848), Customizable task assignment in Streams (KIP-924), Shareable state stores in Streams (KIP-813), PATCH method for Connect REST API (KIP-477), Official Docker image and GraalVM native image. |
| Improvements | JBOD support in KRaft now stable, client rebootstrap on metadata failure (KIP-899), configurable remote fetch timeout, extended RecordDeserializationException, improved StateStore iterator metrics, enforcement of tasks.max in Connect. |
| Tiered Storage | Support for clusters with multiple log directories (JBOD) while remaining in early access. |
| Kafka Streams | Custom task assignor interface and shareable state stores across applications. |
| Deprecations | offsets.commit.required.acks, Log4J appender, old kafka.serializer.Decoder. |
Compression level control gives you finer tuning
KIP-390 lets you specify the compression level for supported codecs like gzip, lz4, and zstd instead of always using the default.
This helps balance CPU usage against compression ratio depending on your workload and hardware.
In practice, you can lower the level for high-throughput topics where speed matters more than storage savings.
Next Generation Consumer Rebalance Protocol enters preview
KIP-848 introduces a simplified rebalance protocol that moves most complexity to the Group Coordinator, making rebalances incremental and avoiding full stop-the-world synchronization.
It delivers the same delivery guarantees while improving stability and efficiency for large consumer groups.
You can start testing it in non-production environments to prepare for its general availability in a future release.
Tiered Storage gains JBOD support
Tiered Storage now works with brokers configured with multiple log directories (JBOD), expanding its usability in setups with heterogeneous disk configurations.
It remains in early access while the team continues gathering production feedback.
Meanwhile, JBOD support in KRaft mode has graduated from early access and is now fully stable.
Kafka Streams adds flexibility in task assignment and state stores
KIP-924 provides a pluggable interface for custom task assignment behavior in the Streams partition assignor.
KIP-813 introduces shareable state stores, letting multiple Streams applications access the same state data without duplicating it through topics.
These changes open new patterns for building shared processing topologies across teams or applications.
Kafka Connect gets easier configuration updates
KIP-477 adds support for the PATCH HTTP method in the Connect REST API, enabling partial updates to connector configurations.
The tasks.max property is now strictly enforced, preventing unexpected behavior when you set a maximum number of tasks.
These updates make day-to-day management of connectors smoother and more predictable.
Client resilience and observability improvements
KIP-899 allows producer and consumer clients to automatically rebootstrap metadata when no known brokers are reachable.
New metrics help detect leaked iterators and memory issues in Streams state stores, while the RecordDeserializationException now carries the problematic record for easier debugging or dead-letter handling.
A method to check metric measurability was also added to simplify custom monitoring code.
FAQ
What is the biggest new capability in Kafka 3.8 for consumers?
The preview of the Next Generation Consumer Rebalance Protocol (KIP-848) offers a more efficient and incremental rebalancing approach.
Can I set a custom compression level in Kafka 3.8?
Yes, KIP-390 introduces configuration to control compression levels for gzip, lz4, and zstd producers.
Is Tiered Storage fully production ready in 3.8?
No, it is still in early access, but it now supports JBOD (multiple log directories) configurations.
How does Kafka Streams benefit from this release?
You get customizable task assignment and the ability to share state stores across different Streams applications without duplicating data.
Are there any deprecations I should watch for in 3.8?
Yes, offsets.commit.required.acks, the Log4J appender, and the old kafka.serializer.Decoder are deprecated and scheduled for removal in Kafka 4.0.