What Is New in Apache Kafka 3.5
Apache Kafka 3.5.0 focuses on rack awareness for consumers, versioned state stores in Streams, improved MirrorMaker 2 capabilities, and continued KRaft enhancements while officially deprecating ZooKeeper mode.
| Category | Key Changes |
|---|---|
| New Features | Rack-aware consumer partition assignment (KIP-881), EnvVarConfigProvider (KIP-887), Versioned State Stores in Streams (KIP-889), Boolean Serde (KIP-907), first-class offset listing in Connect (KIP-875), full distributed mode for dedicated MirrorMaker 2 clusters (KIP-710). |
| Improvements | Stale broker epoch protection in ISR (KIP-903), incremental config sync in MirrorMaker (KIP-894), exactly-once support for MirrorSourceConnector (KIP-618), extended ProductionExceptionHandler for serialization errors (KIP-399). |
| KRaft | SCRAM support via kafka-storage.sh (KIP-900), ZooKeeper mode deprecated (removal in 4.0). |
| Kafka Streams | Versioned state stores for better out-of-order join handling, Boolean Serde, serialization exception handling in ProductionExceptionHandler. |
| Kafka Connect / MirrorMaker | Offset listing endpoints, distributed mode improvements for dedicated clusters, exactly-once semantics for MirrorSourceConnector. |
| Deprecations | ZooKeeper mode (KIP-866 migration still early access). |
Rack awareness comes to consumer partition assignment
KIP-881 completes rack-aware support for the built-in consumer assignors, allowing partitions to be spread across different racks for better fault tolerance.
This reduces the impact of rack-level failures on consumer availability and data locality.
In practice, enabling rack.id on brokers and consumers now gives you more resilient consumption patterns without custom assignors.
Versioned State Stores improve join accuracy in Kafka Streams
KIP-889 introduces versioned state stores that help handle out-of-order records more accurately during joins and aggregations.
You can now query historical versions of state, making time-sensitive processing more reliable.
This is particularly useful in event-driven applications where records can arrive late or out of sequence.
MirrorMaker 2 gains better scalability and exactly-once support
KIP-710 brings full distributed mode support to dedicated MirrorMaker 2 clusters, allowing multiple instances with automatic reconfiguration.
Exactly-once semantics are now available for the MirrorSourceConnector through KIP-618 implementation.
IncrementalAlterConfigs usage (KIP-894) also makes topic configuration syncing more efficient between clusters.
Kafka Connect adds first-class offset management
KIP-875 introduces REST API endpoints for listing connector offsets, marking the first step toward full offset management capabilities.
This lays the groundwork for safer offset resets and migrations in future releases.
You can now inspect offsets directly through the Connect REST interface without custom tooling.
KRaft tooling and safety improvements
KIP-900 adds SCRAM credential configuration support to the kafka-storage.sh tool for KRaft brokers.
KIP-903 prevents replicas with stale broker epochs from joining the ISR, reducing the risk of data loss after unclean shutdowns.
ZooKeeper mode is now deprecated, with full removal planned for Kafka 4.0.
Small but useful additions across the ecosystem
KIP-887 brings an EnvVarConfigProvider so you can pull configurations directly from environment variables.
KIP-399 extends the ProductionExceptionHandler in Streams to catch serialization exceptions.
A built-in Boolean Serde (KIP-907) completes primitive type support in the Streams public API.
FAQ
Is ZooKeeper still supported in Kafka 3.5?
Yes, but it is now officially deprecated. ZooKeeper mode will be removed in Kafka 4.0, so start planning your migration to KRaft.
What does rack-aware assignment change for consumers in 3.5?
KIP-881 updates the built-in assignors to respect rack.id, spreading partitions across racks to improve availability during rack failures.
Are versioned state stores production ready in Kafka Streams 3.5?
Yes. KIP-889 introduces versioned state stores to help handle out-of-order records more accurately in joins and other stateful operations.
Can I list connector offsets through the REST API in 3.5?
Yes. KIP-875 adds the first offset listing endpoints. Full update and delete capabilities will come in later releases.
What improved in MirrorMaker 2 with this release?
Dedicated clusters now fully support distributed mode (KIP-710), and the MirrorSourceConnector gains exactly-once semantics along with more efficient config syncing.