DevLearn
Kafka Architecture

Understanding Kafka Internals

Deep dive into Kafka's distributed architecture and design patterns

Producers

Applications that publish records to Kafka topics

  • Message serialization
  • Partition selection
  • Acknowledgment handling
  • Batching and compression

Brokers

Servers that store messages and serve client requests

  • Message storage on disk
  • Partition replication
  • Consumer group coordination
  • Cluster metadata management

Consumers

Applications that subscribe to topics and process records

  • Pull-based consumption
  • Offset management
  • Consumer group membership
  • Rebalancing

Topics & Partitions

Categories and unit of parallelism for messages

  • Ordered within partition
  • Parallel consumer scaling
  • Retention policies
  • Compaction

Partitioning & Replication

How Kafka achieves scalability and fault tolerance

What are Partitions?

Partitions are the fundamental unit of parallelism in Kafka. Each topic is divided into one or more partitions, each of which is an ordered, immutable sequence of records.

Partition Selection

Producers can specify a partition key. Records with the same key are always sent to the same partition, ensuring ordering for those records.

// Partition Assignment
Topic: orders (3 partitions)
┌─────────────────────────────────────────────┐
│ Partition 0: orders-0, orders-3, orders-6... │
├─────────────────────────────────────────────┤
│ Partition 1: orders-1, orders-4, orders-7... │
├─────────────────────────────────────────────┤
│ Partition 2: orders-2, orders-5, orders-8... │
└─────────────────────────────────────────────┘

Key Takeaway

Ordering is guaranteed only within a partition. For global ordering, use a single partition (limits parallelism) or design your consumers to handle out-of-order events.

Event-Driven Design Patterns

Common architectural patterns using Kafka

Event Sourcing

Store all changes as a sequence of events

Application → Kafka → Event Store → Read Models

CQRS

Command Query Responsibility Segregation

Commands → Kafka → Write Model | Read Model ← Queries

Saga Pattern

Manage distributed transactions across services

Service A → Kafka → Service B → Kafka → Service C

Event-Driven Architecture

Loose coupling through event communication

Producers → Event Bus (Kafka) → Consumers