Apache Kafka
The open-source distributed log that most event streaming is built on, or built to be compatible with.
- What it is
- Event streams
- Used for
- Pub/sub,Message queues
- Type
- Open source
- Made by
- Apache Software Foundation
- License
- Apache 2.0
- Facts checked
- 5 October 2026
What it is
Kafka stores each topic as a set of partitions, and each partition as a series of segment files on a broker’s disk. A producer picks the partition by hashing the record’s key, so every event for one customer lands, in order, in the same partition. Each partition is copied to several brokers: one leader takes the writes and the followers replicate them. Records stay until the retention limit (seven days by default) or, with log compaction, until a newer record with the same key replaces them.
Since Kafka 4.0 (March 2025) a cluster runs entirely in KRaft mode: a few controller nodes keep the cluster’s metadata in their own Raft-replicated log, and the separate ZooKeeper ensemble that older versions needed is gone. Around the core sit Kafka Connect, a framework of ready-made source and sink connectors for databases, object stores and warehouses, and Kafka Streams, a Java library for stateful stream processing. Share groups (“Queues for Kafka”), production-ready since 4.2, let many consumers split the records of the same partitions and acknowledge them one by one, like a queue.
Why teams pick it
- Sequential disk writes and batching give very high throughput on ordinary hardware
- Consumers can rewind to any retained offset, so a new service or a fixed bug can reprocess history
- The biggest ecosystem in streaming: Connect, Streams, Flink, Spark, and a protocol that Amazon MSK, Confluent Cloud, Redpanda and Azure Event Hubs all speak
- Log compaction turns a topic into a durable “latest value per key” changelog
Watch out for
- Running it yourself is real work: partition counts, replication, rebalancing, disk sizing and upgrades; many teams pay for a managed service instead
- The partition count caps parallelism (one consumer per partition in a group), and adding partitions remaps keys and breaks per-key ordering
- No per-message routing, delays or priorities; that logic lives in your consumers
- Long retention on broker disks is expensive unless you set up tiered storage (production-ready since 3.9) with a remote-storage plugin
Alternatives
What all event streams have in common →
Amazon Kinesis Data StreamsAWSAWS’s serverless event stream, split into shards that each keep records in order.
RedpandaCommercialA Kafka-compatible streaming broker rewritten in C++ as one binary, with no JVM and no ZooKeeper.
WarpStreamCommercialA Kafka-compatible stream that keeps no data on disks: stateless Agents write straight to your object storage bucket.How it fits with other technologies
What Apache Kafka uses
What uses Apache Kafka
- Fissioncan be triggered by messages inApache Kafka
- Akkaconsumes and produces via Alpakka KafkaApache Kafka
- Apache Pekkostreams topics via Pekko Connectors KafkaApache Kafka
- Protocol Buffersis a Schema Registry message format onApache Kafka
- Apache Flussadapts the replication code ofApache Kafka
- Apache Pulsarcopies topics via Pulsar IO to and fromApache Kafka
- Redpandaspeaks the client protocol ofApache Kafka
- WarpStreamspeaks the client protocol ofApache Kafka
- Apache Flinkreads and writes topics exactly once inApache Kafka
- Arroyoreads and writes topics exactly once inApache Kafka
- Bytewaxreads and writes topics inApache Kafka
- Denormalizedreads and writes topics inApache Kafka
- Felderareads inputs from and writes views toApache Kafka
- Kafka Streamsreads, writes and backs up its state inApache Kafka
- ksqlDBruns continuous SQL queries over topics inApache Kafka
- Pathwayreads and writes topics inApache Kafka
- Quix Streamsreads, writes and backs up its state inApache Kafka
- Redpanda Connectreads and writes topics inApache Kafka
- RisingWavereads and writes topics inApache Kafka
- StreamFusiondecodes and encodes records natively forApache Kafka
- Streamlingconsumes and produces topics inApache Kafka
- AWS IoT Coreforwards messages via rules toApache Kafka
- EMQXstreams messages to and fromApache Kafka
- HiveMQstreams messages to and fromApache Kafka
- MQTTis bridged by Kafka Connect connectors intoApache Kafka
- Cephcan send bucket notifications toApache Kafka
- MinIOcan send bucket notifications toApache Kafka
- Versity S3 Gatewaycan send object events toApache Kafka
- CockroachDBstreams changefeeds toApache Kafka
- Apache Cassandrareceives topics, via a sink connector, fromApache Kafka
- ScyllaDBstreams CDC changes, via a connector, toApache Kafka
- ArangoDBingests topics via a Kafka Connect sink fromApache Kafka
- Neo4jhas source and sink connectors forApache Kafka
- GreptimeDBcan use as its write-ahead logApache Kafka
- kdb+publishes and subscribes, via an adapter, toApache Kafka
- QuestDBingests topics, via a connector, fromApache Kafka
- TDenginesyncs both ways, via connectors, withApache Kafka
- OpenSearchcan pull documents directly fromApache Kafka
- Apache ZooKeeperheld cluster metadata, until 4.0, forApache Kafka
- KurrentDBhas sink and source connectors forApache Kafka
- Apache Avrois a common message format onApache Kafka
- Apache Hudican ingest streams fromApache Kafka
- Apache Paimoncan sync CDC topics into tables fromApache Kafka
- Lakekeeperpublishes change events toApache Kafka
- Apache Sparkreads and writes streams inApache Kafka
- Hotdataingests topics and Debezium CDC fromApache Kafka
- ClickHouseconsumes topics fromApache Kafka
- Apache Dorisingests topics, exactly once, fromApache Kafka
- Apache Druidingests topics, exactly once, fromApache Kafka
- StarRocksingests topics, exactly once, fromApache Kafka
- Tinybirdconsumes topics from and can sink toApache Kafka
- Apache Amorocan use as a LogStore for Mixed tablesApache Kafka
- Apache NiFiconsumes from and publishes to topics inApache Kafka
- Artiebuffers every change event inApache Kafka
- Estuarycaptures topics fromApache Kafka
- OLakereads topics through consumer groups fromApache Kafka
- OpenTelemetrycan buffer telemetry throughApache Kafka
- Fluentdproduces log events toApache Kafka
- Logstashconsumes from and produces toApache Kafka
- Telegrafreads from and writes metrics toApache Kafka
- Sentryself-hosted, streams events throughApache Kafka
Create a topic, produce keyed records and read them as a consumer group · bash
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create \
--topic orders --partitions 6 --replication-factor 3
# type lines like customer-42:{"total": 99}
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic orders \
--property parse.key=true --property key.separator=:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic orders \
--group billing --from-beginning
# where is each partition’s offset, and how far behind is the group?
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group billingSee it in a real stack
Open lakehouse on Iceberg →Where it came from2010–2025
Around 2010, LinkedIn had two kinds of data that didn’t fit together. Databases held users and connections, but a much bigger stream of events (page views, searches, clicks, server metrics) had to reach Hadoop for offline analysis and live systems like search and newsfeed at the same time. The messaging systems of the day, such as ActiveMQ, focused on rich delivery guarantees, were hard to scale and slowed down badly when unread messages piled up. Log collectors like Facebook’s Scribe moved data in bulk to Hadoop but couldn’t feed anything in real time.
Jay Kreps, Neha Narkhede and Jun Rao built Kafka to do both: take in billions of events a day and let any number of systems read them, in real time or hours later. They described it in a 2011 paper at the NetDB workshop. Kreps named it after Franz Kafka because it was “a system optimized for writing” and he liked the author’s work. LinkedIn open-sourced it in January 2011, and in 2014 the three creators left to found Confluent around it.
Kafka changed how companies think about data movement. Instead of point-to-point pipelines between every pair of systems, many now publish events once to a central log, and every other system subscribes.
Why it’s built this way
- An append-only log on disk instead of a message queue
- Writing to the end of a file and reading it in order is the fastest thing a disk does. Keeping data for days, rather than deleting it on delivery, lets slow consumers, batch jobs and new systems replay history.
- Consumers track their own position
- The broker doesn’t record which messages each consumer has seen, so serving one more consumer costs almost nothing, and a consumer can rewind just by changing its offset.
- Partitions as the unit of scale and order
- Splitting a topic into partitions spreads it over many machines. Ordering is promised only within a partition, which is enough for “all events for one user, in order” without a global bottleneck.
- Lean on the operating system
- Kafka relies on the OS page cache instead of its own cache, and on
sendfileto copy data from disk to network without passing through the application, which is a large part of why it’s fast.
Timeline
- 2010
Built at LinkedIn to move activity data and metrics
- 2011
Open-sourced in January; NetDB paper; enters the Apache Incubator in July
- 2012
Graduates to a top-level Apache project in October
- 2014
Its creators found Confluent
- 2017
Exactly-once delivery and transactions arrive in 0.11; version 1.0 follows in November
- 2019
KIP-500 proposes replacing ZooKeeper with Kafka’s own Raft-based quorum (KRaft)
- 2025
Kafka 4.0 runs without ZooKeeper entirely and previews queues (KIP-932)
- Kreps, Narkhede, Rao: Kafka, a distributed messaging system for log processing (NetDB 2011 paper) · archived copy, original
- Kreps, Narkhede, Rao: Kafka talk slides, NetDB 2011
- LinkedIn blog: Open-sourcing Kafka, LinkedIn’s distributed message queue (Jan 2011) · archived copy, original
- Jay Kreps (Confluent): Putting Apache Kafka to use, part 1 (Feb 2015)
- Apache Incubator: Kafka project status (entered July 2011, graduated October 2012)
- Confluent blog: Announcing Confluent, a company for Apache Kafka and real-time data (Nov 2014)
- Confluent blog: Exactly-once semantics are possible, here’s how Kafka does it (June 2017)
- Apache Kafka downloads: release dates of 0.11.0.0 and 1.0.0
- KIP-500: Replace ZooKeeper with a self-managed metadata quorum
- Apache JIRA KAFKA-9119: KIP-500 (opened October 2019)
- Apache Kafka 4.0.0 release announcement (Mar 2025)
- Kafka docs: Design (page cache, sendfile, consumer position)
- Wikipedia: Apache Kafka (Kreps on the name, citing Kafka: The Definitive Guide)
Sources21 · facts checked 5 October 2026
- Kafka docs: Introduction
- Kafka docs: Design
- Kafka docs: Broker configs (log.retention.hours)
- Kafka docs: Basic Kafka operations (partition count, adding partitions)
- Kafka docs: KRaft
- Kafka docs: Tiered storage
- Kafka docs: Kafka Connect overview
- Kafka docs: Kafka Streams introduction
- Apache Kafka 4.0.0 release announcement (Mar 2025)
- Apache Kafka 4.2.0 release announcement (Feb 2026)
- Apache Kafka 3.9.0 release announcement (Nov 2024)
- AWS docs: What is Amazon MSK?
- Confluent docs: Confluent Cloud overview
- Redpanda docs: Kafka compatibility
- Microsoft Learn: Azure Event Hubs for Apache Kafka
- Apache Flink docs: Kafka connector
- Apache Spark docs: Structured Streaming and Kafka integration
- Debezium docs: PostgreSQL connector
- Confluent docs: Amazon S3 sink connector
- Apache Iceberg docs: Kafka Connect
- Snowflake docs: Overview of the Kafka connector