Before KRaft (Kafka 3.3+, default in Kafka 4.0), Kafka depended on Apache ZooKeeper for cluster metadata: broker registration, controller election, topic configuration, and ACLs. This created operational complexity (two distributed systems to manage), a scalability ceiling (~200k partitions), slow controller failover (up to 30s), and an architectural inconsistency where Kafka's own metadata wasn't stored in Kafka.
Lesson 1 of 5
Why ZooKeeper Had to Go
Try it in the simulator
Guided scenarios for this module — the simulator opens with the exercise already running.