Liking cljdoc? Tell your friends :D

KRaft Mode - Kafka without Zookeeper

๐Ÿ†• What is KRaft?

KRaft (Kafka Raft) is the new Apache Kafka architecture that eliminates the Zookeeper dependency. Available since Kafka 2.8 and stable since 3.3.

โœ… KRaft Advantages

  • ๐Ÿš€ Faster startup - Fewer components to initialize
  • ๐Ÿ“ฆ Less complexity - One less component to manage
  • ๐Ÿ”ง Simplified configuration - No need to configure Zookeeper
  • โšก Better performance - Metadata managed directly by Kafka
  • ๐ŸŽฏ Future of Kafka - Zookeeper will be discontinued

โŒ Current Limitations

  • ๐Ÿงช Relatively new - Less time in production
  • ๐Ÿ“š Less documentation - Community still migrating
  • ๐Ÿ”Œ Some tools - May not fully support it yet

๐Ÿš€ How to Use in Kafka Metamorphosis

Complete KRaft Mode

;; Complete setup with KRaft + Kafka UI
(dev/kafka-setup-kraft!)

;; Or with specific topics
(dev/kafka-setup-kraft! ["orders" "payments" "notifications"])

;; Just start without creating topics
(dev/kafka-up-kraft!)

Simple KRaft Mode (Recommended for Tests)

;; Minimalist setup - super fast
(dev/kafka-setup-simple!)

;; Just start Kafka without UI
(dev/kafka-up-simple!)

๐Ÿ—๏ธ KRaft vs Zookeeper Architecture

Traditional (Zookeeper)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Zookeeper  โ”‚    โ”‚    Kafka    โ”‚    โ”‚  Kafka UI   โ”‚
โ”‚   :2181     โ”‚โ—„โ”€โ”€โ–บโ”‚   :9092     โ”‚โ—„โ”€โ”€โ–บโ”‚   :8080     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

KRaft Mode

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    Kafka    โ”‚    โ”‚  Kafka UI   โ”‚
โ”‚   :9092     โ”‚โ—„โ”€โ”€โ–บโ”‚   :8080     โ”‚
โ”‚ (+ metadata)โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Simple KRaft

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚    Kafka    โ”‚
โ”‚   :9092     โ”‚
โ”‚ (+ metadata)โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš™๏ธ Generated Configurations

Complete KRaft (kraft-docker-compose)

services:
  kafka:
    image: confluentinc/cp-kafka:7.5.0
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: "broker,controller"
      KAFKA_CONTROLLER_QUORUM_VOTERS: "1@localhost:29093"
      # ... without Zookeeper

  kafka-ui:
    # Web interface at localhost:8080

Simple KRaft (kraft-simple-docker-compose)

services:
  kafka:
    image: confluentinc/cp-kafka:7.5.0
    ports:
      - "9092:9092"
    environment:
      KAFKA_PROCESS_ROLES: "broker,controller"
      # ... minimal configuration

๐Ÿ› ๏ธ Recommended Workflow

For Daily Development

;; 1. Quick setup for development
(dev/kafka-setup-kraft!)

;; 2. Use normally
(dev/send-test-messages "my-topic" 5)
(dev/read-test-messages "my-topic")

;; 3. Open UI in browser: http://localhost:8080

;; 4. Stop when finished
(dev/kafka-dev-teardown!)

For Quick Tests

;; 1. Minimalist setup (no UI)
(dev/kafka-setup-simple!)

;; 2. Test quickly
(dev/setup-dev-topic "test")
(dev/send-test-messages "test" 3)

;; 3. Stop
(dev/kafka-dev-teardown!)

๐Ÿ”ง KRaft Troubleshooting

Problem: Kafka won't start

;; View specific logs
(dev/kafka-docker-logs! "kafka")

;; Check if ports are free
;; 9092 (Kafka), 29093 (Controller)

Problem: Can't connect

;; Wait for complete initialization
(dev/wait-for-kafka 60)

;; Check status
(dev/kafka-docker-status)

Complete Reset

;; Stop and clean everything
(dev/kafka-dev-teardown! true)

;; Recreate from scratch
(dev/kafka-setup-kraft!)

๐ŸŽฏ Recommendations

Use KRaft When:

  • โœ… Local development
  • โœ… Automated tests
  • โœ… New projects
  • โœ… Want faster startup

Use Zookeeper When:

  • โš ๏ธ Critical production environment
  • โš ๏ธ Legacy tools that don't support KRaft
  • โš ๏ธ Compliance with existing setup

๐Ÿฆ‹ Future Migration

Kafka Metamorphosis facilitates migration:

;; Currently using Zookeeper
(dev/kafka-setup-zookeeper!)

;; Migrate to KRaft (same API)
(dev/kafka-setup-kraft!)

;; Application code remains the same!

Kafka's metamorphosis eliminates Zookeeper complexity! ๐Ÿชฒโžก๏ธ๐Ÿฆ‹

Can you improve this documentation? These fine people already did:
Caio Henrique & Caio Clavico
Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
โ†Move to previous article
โ†’Move to next article
Ctrl+/Jump to the search field
ร— close