Apache Kafka adalah platform untuk distributed streaming.
- Berguna untuk Publish/Subscribe untuk streams records.
- Dapat Anda bayangkan sebagai message bus, tetapi untuk data.
- Didesain high-troughput dan low latency.
Sebelum didonasikan ke Apache Project, digunakan oleh Linkedin untuk memproses 800 miliar message per hari dengan ukuran lebih dari 175 TB data, dijalankan diatas 60 Kafka cluster.
Ada 4 API yang disediakan Kafka:
- Producer, digunakan aplikasi untuk publish stream records ke Kafka Topic.
- Consumer, digunakan aplikasi untuk subscribe ke satu atau lebih dari satu Topic dan memproses stream records didalamnya.
- Streams, digunakan aplikasi untuk bertindak sebagai stream processor.Berguna jika akan men-transform data dan mengembalikan langsung ke Kafka sebagai outgoing stream.
- Connector, extend Kafka dengan menghubungkan Producer dan Consumer ke external sistem seperti Relational Database.
Berikut diagram dari arsitektur Kafka. Terdapat standalone sistem ZOOKEEPER yang berguna untuk mengkoordinasi cluster.

Berikut perbedaan antara Kafka dan Google Pub/Sub
| Kafka | Pub/Sub |
|---|---|
| Guaranteed message ordering | Tidak ada jaminan message ordering |
| Tuneable message retention | Maks 7 hari message retention |
| Pooling (pull) subscriptions only | Pull or Push subscriptions |
| Unamanged | Managed |