Trước Kafka 3.3, ZooKeeper được dùng để manage cluster metadata (broker registration, partition leader election, topic config). ZooKeeper là một external dependency phức tạp, tạo ra operational overhead (phải manage thêm một cluster), giới hạn số partition (~200k partition/cluster vì ZooKeeper bottleneck), và có vấn đề về split-brain scenario. KRaft (Kafka Raft Metadata mode) thay thế ZooKeeper bằng cách dùng Raft consensus protocol ngay trong Kafka cluster — một số broker được bầu làm controller voter.
Lợi ích: đơn giản hóa deployment (không cần ZooKeeper), tăng giới hạn partition lên hàng triệu, metadata propagation nhanh hơn, startup/failover time giảm từ phút xuống giây. KRaft trở nên production-ready từ Kafka 3.3 (phát hành 10/2022). Kafka 4.0 (phát hành 3/2025) đã hoàn toàn loại bỏ ZooKeeper — mọi cluster mới phải dùng KRaft. Trong production mới nên bắt đầu với KRaft mode.